建议使用ImageMagick压缩JPG文件
image-processing
imagemagick
7
0

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

输入图像为255kb,处理后的图像为264kb(使用+ profile删除配置文件并将质量设置为70%)。有什么办法可以将该图像至少压缩到150kb?那可能吗?我可以使用哪些ImageMagick选项?

参考资料:
Stack Overflow
收藏
评论
共 9 个回答
高赞 时间 活跃

一旦我需要调整相机的照片大小以进行显影:

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

命令:

mogrify -quality "97%" -resize 2048x2048 -filter Lanczos -interlace Plane -gaussian-blur 0.05 
  • 结果文件大小753 kB
  • 分辨率2048x2048

而且我的1920x1080分辨率监视器在全屏上看不到任何变化。 2048分辨率最适合以360 dpi的最大质量显影10厘米的照片。我不想剥离它。

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

收藏
评论

在这里做了一些实验,男孩做了高斯模糊使情况有所不同。我使用的最终命令是:

mogrify *-采样因子4:2:0 -strip -quality 88 -interlace Plane -define jpeg:dct-method = float -colorspace RGB -gaussian-Blur 0.05

如果在0.05时没有高斯模糊,则约为261kb,而对于我正在测试的图像,则约为171KB。在放大图像之前,在具有大型复杂图像的1440p显示器上的视觉差异不会明显。

收藏
评论

@JavisPerez-有什么方法可以将该图像至少压缩到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

除了由于降低输入中的-quality值而导致的任何损失之外,您还将通过解压缩和重新压缩而损失一些质量。

收藏
评论

我在建议的命令中添加了-adaptive-resize 60% ,但添加了-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
  • img_resized.jpg = 845KB

我不确定这种转换是否会严重破坏我的形象,但老实说,我认为我的转换看起来像废话。那是一个广角全景,我不在乎细微的阻碍。

收藏
评论

只是对那些在PHP中使用Imagick类的人说:

$im -> gaussianBlurImage(0.8, 10);      //blur
$im -> setImageCompressionQuality(85);  //set compress quality to 85
收藏
评论

我正在使用Google Pagespeed Insights图像优化指南,对于ImageMagick,他们建议以下内容:

采样因子4:2:0
-跳闸
-quality 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大小,而不会造成太多可见损失。

收藏
评论

对于在PHP中使用Imagick的用户来说 ,这是一个完整的解决方案:

$im = new \Imagick($filePath);
$im->setImageCompression(\Imagick::COMPRESSION_JPEG);
$im->setImageCompressionQuality(85);
$im->stripImage();
$im->setInterlaceScheme(\Imagick::INTERLACE_PLANE);

// Try between 0 or 5 radius. If you find radius of 5 
// produces too blurry  pictures decrease to 0 until you 
// find a good balance between size and quality. 
$im->gaussianBlurImage(0.05, 5);



// Include this part if you also want to specify a maximum size for the images

$size = $im->getImageGeometry();
$maxWidth = 1920;
$maxHeight = 1080;


// ----------
// |        |
// ----------
if($size['width'] >= $size['height']){
  if($size['width'] > $maxWidth){
    $im->resizeImage($maxWidth, 0, \Imagick::FILTER_LANCZOS, 1);
  }
}


// ------
// |    |
// |    |
// |    |
// |    |
// ------
else{
  if($size['height'] > $maxHeight){
    $im->resizeImage(0, $maxHeight, \Imagick::FILTER_LANCZOS, 1);
  }
}
收藏
评论

我总是使用:

  • 85质量
  • 渐进式(复合压缩)
  • 极小的高斯模糊来优化尺寸(半径的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 。这样做是将色度通道的分辨率降低到一半,而不会干扰您的眼睛所锁定的亮度分辨率。如果要在转换中获得更好的保真度,则可以通过指定-define jpeg:dct-method=float来在不增加文件大小的情况下进行一些改进,即使用更准确的浮点离散余弦变换,而不是使用默认的快速整数版本。

收藏
评论

我会添加一个有用的旁注和一个一般性建议,以最小化JPG和PNG。

首先, ImageMagick读取(或更好的“猜测” )输入的jpeg压缩级别,因此,如果根本不添加-quality NN ,则输出应使用与输入相同的级别。有时可能是一个重要功能。否则,默认级别为-quality 92 (请参见www.imagemagick.org

建议是关于一个非常出色的免费工具ImageOptim ,它也适用于批处理。
您可以获得较小的jpg(和png),尤其是在使用免费的ImageAlpha (不是批处理)或免费的Pngyu(如果需要批处理)之后)。
这些工具不仅适用于Mac和Win,而且适用于命令行(我建议使用Brew进行安装,然后在Brew公式中进行搜索)。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号