手机版

PHP利用imagick生成组合缩略图

时间:2021-09-17 来源:互联网 编辑:宝哥软件园 浏览:

先给大家炫下效果图,如果大家觉得还很满意,请继续往下阅读:

这里说的imagick是ImageMagick在服务器端编程语言(专业超文本预处理器的缩写)下的扩展。使用pecl安装起来那叫一个轻松简单一条命令就搞定:

复制代码代码如下:sudo pecl安装imagick

(扩展装好后还是要在php.ini中加上extension=imagick.so,然后记得重启街头流氓或php-fpm服务。)

最近有个需求是要把多张图片组合起来生成缩略图,刚好用用这个强大的imagick扩展。

这个需求是要这样生成缩略图:

1.如果有一张图片,就直接生成这张图片的缩略图;

2.如果有2张图片,则一张在左边一张在右边,各一半;

3.如果有3张图片,则两张左边平均分配,一张独占右边;

4.如果有四张图片,则像田字格一样平均分配空间;

5.更多张图片,则只取前四张,按田字格方式生成缩略图。

这规则还真不少,不过还不算太过复杂,很快搞出来了:

命名空间\克拉伦斯\缩略图;类缩略图扩展\ Imagick {/* * * @ param array $ images * @ param int $ width * @ param int $ height * @ return static * @抛出拇指指甲异常*/公共静态函数createFromImages($images,$ width,$ height){ if(empty($ images)){ 0抛出新的拇指指甲异常('无图像!');} $ thumble=new static();$thumbnail-newImage($width,$height,' white ',' jpg ');$缩略图-复合图像($ images);返回$缩略图;}公共函数合成图像($ images){ $ imagesKeys=array _ keys($ images);$ compositeConfig=$ this-calcCompositeImagesPosAndSize($ images);foreach($ composite fig as $ index=$ CFG){ $ IMgKey=$ imagesKeys[$ index];$ img=new \ Imagick($ images[$ IMgKey]);$ img=$ this-makefositethumble($ img,$ CFG);$this-compositeImage($img,self:COMPOSITE_OVER,$cfg['to']['x'],$ CFG[' to '][' y ']);} }受保护的函数makefositethumbnail(\ Imagick $ img,$ CFG){ $ img-cropthumbinet image($ CFG[' size '][' width '],$ CFG[' size '][' height ']);返回$ img}受保护的函数calcCompositeImagesPosAndSize($ images){ $ width=$ this-getImageWidth();$ height=$ this-getImageHeight();switch(count($ images)){ case 0:抛出新的缩略图异常('无图像!');case 1://| 0 | return[0=[' to '=[' x '=0,' y'=0 ],' size'=['width'=$width,' height'=$height,]]];case 2://| 0 | 1 | return[0=[' to '=[' x '=0,' y'=0 ],' size'=['width'=$width/2,' height'=$height,],1=['to'=[ 'x'=$width/2,' y'=0],' size'=['width'=$width/2,' height'=$height,]];case 3://| 0 | 1 |/| 2 | | return[0=[' to '=[' x '=0,' y'=0 ],' size'=['width'=$width/2,' height'=$height/2,],1=['to'=[ 'x'=$width/2,' y'=0],' size'=['width'=$width/2,' height'=$height,],2=['to'=[ 'x'=0,' default: 2,],3=['to'=[ 'x'=$width/2,' y'=$height/2],' size'=['width'=$width/2,' height'=$height/2,],]; }}}用个试试:

复制代码代码如下:美元缩略图=\ Clarence \ thumbnail \ thumbnail :3360从图像创建($ srcImages,240,320);$缩略图-写图像($ OutPutdir)./示例。jpg’);

以上内容给大家介绍了服务器端编程语言(专业超文本预处理器的缩写)利用imagick生成组合缩略图的相关知识,希望对大家有所帮助!

版权声明:PHP利用imagick生成组合缩略图是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。