为了压缩JPEG图像,我可以执行以下操作:
$thumb = new Imagick();
$thumb->readImage("url");
$thumb->setImageCompression(Imagick::COMPRESSION_JPEG);
$thumb->setImageCompressionQuality(80);
然而,我还需要压缩PNG图像(保留透明度)以减小文件大小。是否有使用ImageMagick实现此目的的方法?
为了压缩JPEG图像,我可以执行以下操作:
$thumb = new Imagick();
$thumb->readImage("url");
$thumb->setImageCompression(Imagick::COMPRESSION_JPEG);
$thumb->setImageCompressionQuality(80);
然而,我还需要压缩PNG图像(保留透明度)以减小文件大小。是否有使用ImageMagick实现此目的的方法?
pngquant
有效地量化或减少图像中的颜色数量,直到质量出现可辨别的下降。您可以在ImageMagick中尝试类似的操作,如下所示...
首先,使用内置的rose:
图像,检查图像中的颜色数量-它是3,019:
convert rose: -format %k info:
3019
制作一个PNG
文件并检查其大小 - 大小为6,975字节
convert rose: rose.png
ls -l rose.png
-rw-r--r--@ 1 mark staff 6975 5 Sep 20:57 rose.png
现在将玫瑰转换为255种颜色并检查大小——它已经减小到3,691字节:convert rose: -colors 255 rose255.png
ls -l rose255.png
-rw-r--r-- 1 mark staff 3691 5 Sep 21:02 rose255.png
现在将玫瑰花转换为64种颜色并检查大小 - 缩小到2,361字节。convert rose: -colors 64 rose64.png
ls -l rose64.png
-rw-r--r-- 1 mark staff 2361 5 Sep 21:04 rose64.png
另一种优化或减小PNG文件大小的方法是使用-strip
从图像中剥离任何元数据,例如拍摄日期和时间、相机和镜头型号、创建图像的程序名称以及版权和颜色配置文件。-alpha background
即可实现。
示例
convert -size 512x512 xc:gray +noise random a.png # create an image of random noise
-rw-r--r--@ 1 mark staff 1576107 6 Sep 11:37 a.png # 157kB
convert -size 512x512 xc:gray +noise random -alpha transparent a.png # recreate but make transparent
-rw-r--r--@ 1 mark staff 1793567 6 Sep 11:38 a.png # 179kB, extra transparency channel
convert -size 512x512 xc:gray +noise random -alpha transparent -alpha background a.png # make all transparent pixels black
-rw-r--r--@ 1 mark staff 1812 6 Sep 11:38 a.png # Presto!
convert
就是 ImageMagick。 - Mark Setchellhttp://example.com/image.png
提供一个示例吗?谢谢。参考链接如下:http://puu.sh/k1a67/0dd24b43e7.png - frosty使用-set colorspace Gray
设置灰度不会减小PNG文件的大小,除非还使用了以下选项:
-define png:compression-level=9 -define png:format=8 -define png:color-type=0 -define png:bit-depth=8