我想用ImageMagick压缩一个JPG图像文件,但在大小上不能得到太大的差异。默认情况下,输出大小大于输入。我不知道为什么,但添加了一些+配置文件选项和设置质量后,我可以得到一个较小的尺寸,但仍然类似于原始。
输入图像为255kb,处理图像为264kb(使用+profile删除profile,设置质量为70%)。有没有办法将图像压缩到至少150kb ?这可能吗?我可以使用哪些ImageMagick选项?
我想用ImageMagick压缩一个JPG图像文件,但在大小上不能得到太大的差异。默认情况下,输出大小大于输入。我不知道为什么,但添加了一些+配置文件选项和设置质量后,我可以得到一个较小的尺寸,但仍然类似于原始。
输入图像为255kb,处理图像为264kb(使用+profile删除profile,设置质量为70%)。有没有办法将图像压缩到至少150kb ?这可能吗?我可以使用哪些ImageMagick选项?
当前回答
@JavisPerez——有什么方法可以把图片压缩到至少150kb ?是, 可能吗?我可以使用哪些ImageMagick选项?
请参阅以下链接,其中ImageMagick中有一个选项,用于指定写入JPG文件所需的输出文件大小。
http://www.imagemagick.org/Usage/formats/#jpg_write http://www.imagemagick.org/script/command-line-options.php#define
——jpeg:程度上={大小} 从IM v6.5.8-2开始,您可以为JPEG图像指定最大输出文件大小。大小由后缀指定。例如“400kb”。
convert image.jpg -define jpeg:extent=150kb result.jpg
通过解压和重新压缩,除了由于降低输入的质量值而造成的损失外,还会损失一些质量。
其他回答
我用always:
质量在85 渐进(复合压缩) 一个非常小的高斯模糊来优化大小(半径的0.05或0.5)取决于图片的质量和大小,这明显优化了jpeg的大小。 剥离任何注释或EXIF元数据
在形象魔术应该是
convert -strip -interlace Plane -gaussian-blur 0.05 -quality 85% source.jpg result.jpg
或者在新版本中:
magick source.jpg -strip -interlace Plane -gaussian-blur 0.05 -quality 85% result.jpg
源。
From @Fordi in the comments (Don't forget to upvote him if you like this): If you dislike blurring, use -sampling-factor 4:2:0 instead. What this does is reduce the chroma channel's resolution to half, without messing with the luminance resolution that your eyes latch onto. If you want better fidelity in the conversion, you can get a slight improvement without an increase in filesize by specifying -define jpeg:dct-method=float - that is, use the more accurate floating point discrete cosine transform, rather than the default fast integer version.
我在建议的命令中添加了-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
我不确定这种转变是否严重破坏了我的形象,但说实话,我不认为我的转变看起来像垃圾。这是一个广角全景,我不介意一丝不苟的阻碍。
对于那些在PHP中使用Imagick类的人
$im -> gaussianBlurImage(0.8, 10); //blur
$im -> setImageCompressionQuality(85); //set compress quality to 85
一个非常古老但有用的答案。
我需要说的是,对于严肃的大尺寸摄影,-高斯-模糊是不可接受的,而不是压缩比。
对比下图,%95与-高斯模糊0.05 vs. %85不模糊。原始17.5MB(800万像素,有很多细节),%95不模糊5MB, %85不模糊3036KB, %95模糊3365KB。
模糊和压缩比的比较
也许低一点的模糊度,比如0.02会更好。
如果图像有很大的尺寸,不调整大小很难得到好的结果,下面是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