使用ImageMagick压缩JPG文件的build议
我想用ImageMagick压缩JPG图像文件,但不能在尺寸上有太大的区别。 默认情况下,输出大小比input大。 我不知道为什么,但添加一些+configuration文件选项,并设置质量后,我可以得到一个较小的尺寸,但仍然类似于原来的。
input图像为255kb,处理后的图像为264kb(使用+ profile去除configuration文件并将质量设置为70%)。 有没有办法将这个图像至less压缩到150kb? 那可能吗? 我可以使用哪些ImageMagick选项?
我总是使用:
- 质量在85
- 渐进式(comprobed压缩)
- 一个非常小的高斯模糊来优化大小(半径的0.05或0.5)取决于图片的质量和大小,这显着地优化了JPEG的大小。
- 剥离任何评论或exif标记
在imagemagick应该是
convert -strip -interlace Plane -gaussian-blur 0.05 -quality 85% source.jpg result.jpg
希望这是有用的。
来源链接: http : //www.yuiblog.com/blog/2008/12/05/imageopt-4/
从评论中的@Fordi(如果你喜欢,别忘了赞扬他的评论):如果你不喜欢模糊,可以使用-sampling-factor 4:2:0
来代替。 这样做会将色度通道的分辨率降低一半,而不会影响您的眼睛locking的亮度分辨率。 如果您希望在转换中保持更高的保真度,可以通过指定-define jpeg:dct-method=float
来获得稍微改进,而不增加文件大小,即使用更精确的浮点离散余弦转换,而不是默认的快速整数版本。
只要对那些在PHP中使用Imagick类的人说:
$im -> gaussianBlurImage(0.8, 10); //blur $im -> setImageCompressionQuality(85); //set compress quality to 85
一旦我需要调整相机的照片大小来开发:
- 原始文件大小:2800 kB
- 分辨率:3264×2448
命令:
mogrify -quality "97%" -resize 2048x2048 -filter Lanczos -interlace Plane -gaussian-blur 0.05
- 结果文件大小753 kB
- 第2048×2048号决议
我无法看到我的1920×1080分辨率显示器全屏幕的任何变化。 2048分辨率是最好的开发最高质量的360 dpi的10厘米的照片。 我不想剥夺它。
编辑:我注意到,我甚至得到更好的结果没有模糊。 没有模糊的文件大小是原来的50%,但质量更好(缩放时)。
我会添加一个有用的附注和一般build议,以尽量减lessJPG和PNG。
首先, ImageMagick读取(或者更好的“猜测” )input的jpeg压缩级别,所以如果您根本不添加-quality NN
,则输出应该使用与input相同的级别。 有时可能是一个重要的function。 否则,默认等级为-quality 92
(见www.imagemagick.org )
build议是关于一个非常真棒的免费工具ImageOptim ,也适用于批处理。
你可以得到更小的jpgs(以及pngs,尤其是在使用免费的ImageAlpha [非批处理]或免费的Pngyu(如果需要批处理)之后)。
不仅如此,这些工具适用于Mac和Win以及命令行(我build议使用Brew进行安装,然后在Brew公式中进行search)。
我使用Google Pagespeed Insights图片优化指南,对于ImageMagick,他们推荐以下内容:
采样因子4:2:0
-跳闸
– 质量85 [它可以改变,我使用范围60-80]
-交错
-colorspace RGB
ImageMagick中的命令:
convert image.jpg -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace RGB image_converted.jpg
有了这些选项,我可以节省高达40%的JPEG尺寸,而不会有明显的损失。
在这里做了一些自我实验,男孩做了一个很好的不同。 我使用的最后一个命令是:
mogrify * -sampling-factor 4:2:0 -strip -quality 88 -interlace Plane -define jpeg:dct-method = float -colorspace RGB -gaussian-blur 0.05
在0.05的情况下没有Gausian模糊,大约是261kb,对于我正在testing的图像,大约是171KB。 放大1440p显示器与大型复杂图像的视觉差异是不明显的,直到你放大方式。
我添加了-adaptive-resize 60%
的build议命令,但-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
- img_resized.jpg = 845KB
我不知道这种转换是否会破坏我的形象,但我真的不认为我的转换看起来像废话。 这是一个广angular的全景,我不在乎细致的阻挠。
@JavisPerez – 有没有办法把这个图像至less压缩到150kb? 那可能吗? 我可以使用哪些ImageMagick选项?
请参阅以下链接,其中ImageMagick中有一个选项用于指定用于写入JPG文件的所需输出文件大小。
http://www.imagemagick.org/Usage/formats/#jpg_write http://www.imagemagick.org/script/command-line-options.php#define
-define jpeg:extent={size} As of IM v6.5.8-2 you can specify a maximum output filesize for the JPEG image. The size is specified with a suffix. For example "400kb".
convert image.jpg -define jpeg:extent=150kb result.jpg
除了由于降低input质量值而造成的任何损失之外,您将通过解压缩和重新压缩而损失一些质量。