我想用ImageMagick压缩一个JPG图像文件,但在大小上不能得到太大的差异。默认情况下,输出大小大于输入。我不知道为什么,但添加了一些+配置文件选项和设置质量后,我可以得到一个较小的尺寸,但仍然类似于原始。

输入图像为255kb,处理图像为264kb(使用+profile删除profile,设置质量为70%)。有没有办法将图像压缩到至少150kb ?这可能吗?我可以使用哪些ImageMagick选项?


当前回答

如果图像有很大的尺寸,不调整大小很难得到好的结果,下面是60%的调整大小,对于大多数目的不会破坏太多的图像。

我用这个对灰度图像有很好的效果(我从PNG转换过来):

ls ./*.png | xargs -L1 -I {} convert {} -strip -interlace JPEG -sampling-factor 4:2:0 -adaptive-resize 60%   -gaussian-blur 0.05 -colorspace Gray -quality 20  {}.jpg

我使用这个扫描的B&W页面,让他们到灰度图像(额外的参数清除阴影从以前的页面):

ls ./*.png | xargs -L1 -I {} convert {} -strip -interlace JPEG -sampling-factor 4:2:0 -adaptive-resize 60%   -gaussian-blur 0.05 -colorspace Gray -quality 20 -density 300 -fill white -fuzz 40% +opaque "#000000" -density 300 {}.jpg 

我在彩色图像中使用这个:

ls ./*.png | xargs -L1 -I {} convert {} -strip -interlace JPEG -sampling-factor 4:2:0 -adaptive-resize 60%   -gaussian-blur 0.05 -colorspace RGB -quality 20  {}.jpg 

其他回答

我在建议的命令中添加了-adaptive-resize 60%,但添加了-quality 60%。

convert -strip -interlace Plane -gaussian-blur 0.05 -quality 60% -adaptive-resize 60% img_original.jpg img_resize.jpg

这是我的结果

img_original.jpg = 13,913KB jpg = 845KB

我不确定这种转变是否严重破坏了我的形象,但说实话,我不认为我的转变看起来像垃圾。这是一个广角全景,我不介意一丝不苟的阻碍。

我使用谷歌Pagespeed Insights图像优化指南,对于ImageMagick,他们推荐以下:

-sampling-factor 4:2:0 带 -quality 85[它可以变化,我使用范围60-80,这里数字越小文件越小] 交错 色彩RGB

ImageMagick中的命令:

convert image.jpg -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace RGB image_converted.jpg

使用这些选项,我可以节省高达40%的JPEG大小,而没有太多明显的损失。

一个非常古老但有用的答案。

我需要说的是,对于严肃的大尺寸摄影,-高斯-模糊是不可接受的,而不是压缩比。

对比下图,%95与-高斯模糊0.05 vs. %85不模糊。原始17.5MB(800万像素,有很多细节),%95不模糊5MB, %85不模糊3036KB, %95模糊3365KB。

模糊和压缩比的比较

也许低一点的模糊度,比如0.02会更好。

有一次我需要调整相机照片的大小来冲洗:

原始文件大小:2800 kB 分辨率:3264 x2448

命令:

mogrify -quality "97%" -resize 2048x2048 -filter Lanczos -interlace Plane -gaussian-blur 0.05 

结果文件大小为753 kB 2048号决议高模

我用1920x1080分辨率的显示器全屏看不出任何变化。2048分辨率是最好的10厘米照片在360 dpi的最大质量。我不想剥了它。

编辑:我注意到,如果没有模糊,我甚至得到了更好的结果。没有模糊的文件大小是原始的50%,但质量更好(缩放时)。

如果图像有很大的尺寸,不调整大小很难得到好的结果,下面是60%的调整大小,对于大多数目的不会破坏太多的图像。

我用这个对灰度图像有很好的效果(我从PNG转换过来):

ls ./*.png | xargs -L1 -I {} convert {} -strip -interlace JPEG -sampling-factor 4:2:0 -adaptive-resize 60%   -gaussian-blur 0.05 -colorspace Gray -quality 20  {}.jpg

我使用这个扫描的B&W页面,让他们到灰度图像(额外的参数清除阴影从以前的页面):

ls ./*.png | xargs -L1 -I {} convert {} -strip -interlace JPEG -sampling-factor 4:2:0 -adaptive-resize 60%   -gaussian-blur 0.05 -colorspace Gray -quality 20 -density 300 -fill white -fuzz 40% +opaque "#000000" -density 300 {}.jpg 

我在彩色图像中使用这个:

ls ./*.png | xargs -L1 -I {} convert {} -strip -interlace JPEG -sampling-factor 4:2:0 -adaptive-resize 60%   -gaussian-blur 0.05 -colorspace RGB -quality 20  {}.jpg