Php 为什么图像压缩有时会减小尺寸,有时会增大尺寸?

Php 为什么图像压缩有时会减小尺寸,有时会增大尺寸?,php,image,compression,imagemagick,imagick,Php,Image,Compression,Imagemagick,Imagick,我主要使用Imagick对JPEG图像进行压缩,但结果非常随机。例如,查看这些结果(近似数字和所有JPEG): 1600kb->600kb已保存1000kb 1000kb->1200kb浪费200kb 400kb->500kb浪费100kb 以下是我使用的代码: $image = new Imagick($path); $image->stripImage(); // remove metadata, though Imagick adds its own, not sure why $i

我主要使用Imagick对JPEG图像进行压缩,但结果非常随机。例如,查看这些结果(近似数字和所有JPEG):

1600kb->600kb已保存1000kb 1000kb->1200kb浪费200kb 400kb->500kb浪费100kb

以下是我使用的代码:

$image = new Imagick($path);
$image->stripImage(); // remove metadata, though Imagick adds its own, not sure why
$image->setImageCompressionQuality(0); // lossless compression
$image->writeImages($path, true); // writeImages instead of writeImage, in case it's a GIF

根据源图像文件的不同,图像重新压缩会有所不同。如果原始图像是用好的软件精心制作的,ImageMagick可能无法与之匹配。简单的解决方案:比较原始版本和新版本的文件大小,保持较小的文件大小


另外,请注意,根据图像的文件类型,压缩质量编号的含义不同。特别是,0表示最差的质量,JPEG的最小大小,但表示快速压缩,PNG不一定小。请参见

根据源图像文件的不同,图像重新压缩会有所不同。如果原始图像是用好的软件精心制作的,ImageMagick可能无法与之匹配。简单的解决方案:比较原始版本和新版本的文件大小,保持较小的文件大小


另外,请注意,根据图像的文件类型,压缩质量编号的含义不同。特别是,0表示最差的质量,JPEG的最小大小,但表示快速压缩,PNG不一定小。请参见

事实就是这样-不同的JPEG压缩库将产生不同的结果。你的问题是什么?JPEG图像已经被压缩了。通过另一个压缩器添加一堆元数据不太可能有多大成效。@Pekka웃 我的问题在原始问题中,但有人编辑了它,并像往常一样将其转换为一条语句。@Martin删除元数据是一件非常有效的事情,但如果您发布用户提交的JPG,并没有说Imagick是理想的方式,但您必须这样做,有太多的敏感的东西,相机和图像编辑器放在JPGfiles@MartinJames这显然是错误的,不同的压缩机可以获得不同的结果。谷歌和雅虎建议使用特殊的压缩器,如jpegtran和pngoptim。我不是在添加元数据,而是在删除元数据。事实就是这样——不同的JPEG压缩库会产生不同的结果。你的问题是什么?JPEG图像已经被压缩了。通过另一个压缩器添加一堆元数据不太可能有多大成效。@Pekka웃 我的问题在原始问题中,但有人编辑了它,并像往常一样将其转换为一条语句。@Martin删除元数据是一件非常有效的事情,但如果您发布用户提交的JPG,并没有说Imagick是理想的方式,但您必须这样做,有太多的敏感的东西,相机和图像编辑器放在JPGfiles@MartinJames这显然是错误的,不同的压缩机可以获得不同的结果。谷歌和雅虎建议使用特殊的压缩器,如jpegtran和pngoptim。我不是在添加元数据,而是在删除它。