ImageMagick是一套功能强大、稳定而且开源的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。同时ImageMagick提供了一个高质量的2D工具包,部分支持SVG。ImageMagic的主要精力集中在性能,减少bug以及提供稳定的API和ABI上。
ImageMagick 是一个用来创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线, 多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。支持大多数的操作系统。
完美实现GIF动画缩略图
缩略图是个很常用的功能。它的实现并不复杂,但如果原图是GIF动画的话,问题就会变得繁琐一点,下面通过一个取自CS警匪游戏的GIF动画来说明问题:
<?php $image = new Imagick('old.gif'); $i = 0; foreach ( $image as $frame ) { $frame->writeImage ( 'old_' . $i ++ . '.gif' ); } ?>
选择二:用ImageMagick提供的convert命令:
shell> convert old.gif old_%d.gif
结果得到GIF动画各帧示意图如下所示:
GIF动画各帧示意图
可以明显的看到,GIF动画为了压缩,会以第一帧为模板,其余各帧按照适当的偏移量依次累加,并只保留不同的像素,结果是导致各帧尺寸不尽相同,为缩略图造成障碍。
下面看看如何用PHP中的Imagick模块来完美实现GIF动画缩略图:
<?php $image = new Imagick ( 'old.gif' ); $image = $image->coalesceImages (); foreach ( $image as $frame ) { $frame->thumbnailImage ( 50, 50 ); } $image = $image->optimizeImageLayers (); $image->writeImages ( 'new.gif', true ); ?>
代码里最关键的是coalesceimages方法,它确保各帧尺寸一致,用手册里的话来说就是:
Composites a set of images while respecting any page offsets and disposal methods. GIF, MIFF, and MNG animation sequences typically start with an image background and each subsequent image varies in size and offset. Returns a new Imagick object where each image in the sequence is the same size as the first and composited with the next image in the sequence.
同时要注意optimizeImageLayers方法,它删除重复像素内容,用手册里的话来说就是:
Compares each image the GIF disposed forms of the previous image in the sequence. From this it attempts to select the smallest cropped image to replace each frame, while preserving the results of the animation.
BTW:如果要求更完美一点,可以使用quantizeImages方法进一步压缩。
注意:不管是coalesceimages,还是optimizeImageLayers,都是返回新的Imagick对象!
如果你更习惯操作shell的话,那么可以这样实现GIF动画缩略图:
shell> convert old.gif -coalesce -thumbnail 50x50 -layers optimize new.gif
有个细节问题:convert版本会比php版本小一些,这是API实现不一致所致。
另外,如果缩略图尺寸不符合原图比例,为了避免变形,还要考虑裁剪或者是补白,由于本文主要讨论GIF动画缩略图的特殊性,就不再继续讨论这些问题了,有兴趣的自己搞定吧。
相关推荐
PHP Imagick扩展提供了超过100种不同的图像处理方法,包括创建、打开、读取、写入、调整大小、裁剪、旋转、颜色校正以及合成图像等。它支持众多图像格式,如JPEG、PNG、GIF、BMP、TIFF等。此外,还具备了对矢量图形...
ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。...
PHP Imagick扩展是PHP语言中用于处理图像的强大工具,它提供了对ImageMagick库的接口,使得开发者能够执行复杂的图像操作,如图像的读取、写入、转换、编辑以及滤镜应用等。在PHP 5.3这个版本中,Imagick扩展扮演着...
Imagick是PHP的一个扩展库,它提供了对ImageMagick图像处理库的接口,使得PHP能够执行复杂的图像操作,如图像缩放、旋转、裁剪、颜色调整以及各种特效的添加。 首先,了解`x64`和`vc14`这两个关键词。`x64`指的是64...
tar -zxvf imagick-3.4.4.tgz && cd /root/imagick-3.4.4 && /usr/local/php7/bin/phpize && ./configure --with-php-config=/usr/local/php7/bin/php-config --with-imagick=/usr/local/ImageMagick && make && ...
PHP Imagick是一个强大的图像处理库,它是基于ImageMagick库的PHP扩展。Imagick提供了丰富的API,允许开发者执行复杂的图像操作,如图像的创建、修改和显示。本文将深入探讨PHP Imagick扩展的核心功能,以及如何在...
在Windows环境下,你需要先下载LNMP的一键安装包,这通常包含了Nginx、MySQL、PHP以及可能的扩展安装程序。在安装包中找到ImageMagick的安装程序,按照向导步骤进行安装。确保在配置过程中选择添加环境变量,以便PHP...
Imagick是PHP中用于图像处理的一个强大库,它提供了对ImageMagick底层库的接口,使得在PHP环境中可以方便地进行图像操作。ImageMagick是一个跨平台的开源软件,支持多种图像格式,如JPEG、PNG、GIF、BMP等,并能执行...
《PHP 5.2与ImageMagick扩展:php_imagick.dll的详解与应用》 在PHP的开发过程中,为了处理图像、进行各种图像操作,如裁剪、旋转、合成等,开发者常常会借助于第三方库。ImageMagick是一个强大的开源跨平台图像...
php_imagick扩展是PHP与ImageMagick库交互的关键,它提供了大量的类和方法,让PHP开发者能够方便地进行图像处理。例如,你可以使用`Imagick`类来创建一个新对象,然后加载图像,应用各种操作,最后保存或输出结果。...
Java图片处理工具ImageMagick是一个强大的跨平台图形处理库,它允许开发人员在Java应用程序中进行复杂的图像操作,包括但不限于转换、编辑、合成图像以及处理大量格式的图像文件。ImageMagick是由C语言编写的,但...
本文实例讲述了PHP使用imagick扩展实现合并图像的方法。分享给大家供大家参考,具体如下: 女朋友做外贸的,最近需要做个产品册,...图片处理用到了ImageMagick和php的imagick扩展。下面上代码,有详细注释: 第一步:
PHP Imagick扩展广泛应用于网页设计、图片处理服务、图像分析、自动化截图工具、社交媒体图片生成等领域。它的强大功能使得开发者能够轻松地进行复杂的图像操作,提升Web应用程序的用户体验。 ### 结语 PHP ...
ImageMagick是一款开源的跨平台图像处理工具,支持多种格式的图像读写,提供了丰富的命令行接口以及编程接口,广泛应用于Web服务器和桌面应用。 ### 一、ImageMagick的下载与安装 #### 1. Windows系统 在Windows...
ImageMagick是一个强大的开源图像处理工具,而PHP的Imagick扩展则允许我们在PHP代码中调用ImageMagick的功能,进行图像操作。 Imagick是PHP的一个PECL扩展(PHP Extension Community Library),可以通过`pecl....
总之,PHP Imagick扩展为PHP开发者提供了一套强大的图像处理工具,结合ImageMagick的强大功能,可以实现丰富的图像操作和创意设计。在64位系统上,其性能更优,适合处理大容量和高质量的图像项目。通过熟练掌握PHP ...
windows+apche+php+imagick扩展成功安装。 恶心的 ImageMagick number of supported formats : 0 window apache 安装安装 php_imagick , 我用的是phpStudy。 文档包含了 ImageMagick.exe php扩展包 还有安装配置...
ImageMagick是一个强大的开源跨平台图像处理库,它支持多种图像格式,并提供了丰富的API供开发者在各种编程语言中调用,如PHP中的imagick扩展。这个"imagick-2.3.0.tgz"文件正是PHP与ImageMagick交互的重要桥梁,它...
PHP Imagick库是PHP的一个扩展,它提供了对ImageMagick库的强大接口,使得在PHP环境中进行复杂的图像处理变得轻而易举。ImageMagick是一款跨平台的开源图像处理软件,而PHP Imagick扩展则是将这个功能引入到PHP世界...
PHP Imagick是一个强大的图像处理扩展,它基于Imagemagick库,提供了超过120种不同的命令行工具和函数,用于创建、编辑和合成图像。标题"php_imagick-3.4.3-5.6-ts-vc11-x64"表明这是适用于PHP 5.6版本的 Imagick...