【问题标题】:Image Magick: Image optimization for websitesImage Magick:网站的图像优化
【发布时间】:2011-08-13 03:38:08
【问题描述】:

我有一台可以拍摄 3008x2000 像素照片的相机。我使用 Image Magick 来缩放和调整要放在我网站上的照片的大小。我在网站上使用的图像尺寸为 602x400。我使用这个命令来减小尺寸:

convert DSC_0124.JPG -scale 20% -size 24% img1.jpg

这会生成一个大小为 602x400 像素的图像。但文件大小将始终高于 250KB。单个 html 页面上的更多图像意味着页面会更重,加载时间会更长。图像魔术中是否有任何功能可以帮助我保持文件大小尽可能小,可能低于 100KB。但是图片大小应该是一样的,也就是602x400px。我已经使用用于 MS Windows 的 SEAMonster 工具实现了类似的优化。由于它没有命令行替代方案,因此当需要转换数百张图像时,它不会有太大帮助。

【问题讨论】:

    标签: optimization image-processing imagemagick


    【解决方案1】:

    使用-quality设置压缩级别:

    convert DSC_0124.JPG -scale 20% -size 24% -quality [0..100] img1.jpg
    

    【讨论】:

      【解决方案2】:

      使用 Delan 建议的命令和附加的“-strip”标志来删除 EXIF 数据,这大大减少了我的一些图像的大小。这是一个适用于 unix 平台的 bash 脚本,但您只能将第二部分用于单个图像。

      for X in *.jpg; do convert "$X" -resize 602x400 -strip -quality 86 "$X"; done
      

      这将转换目录中的所有图像。

      【讨论】:

      • 警告:使用convert 与相同的输入和输出文件名可能是不安全的操作。要么写入临时文件名并有条件地mv 临时覆盖原始文件,要么只使用 mogrify(ImageMagick 套件的一部分)。 mogrify(1) 的手册页指出“Mogrify 会覆盖原始图像文件,而 convert(1) 会写入不同的图像文件。”
      【解决方案3】:

      您可以将输出图像的最大大小定义为 100KB,如下所示:

      convert DSC_0124.JPG -resize 602x400! -strip -define jpeg:extent=100KB img1.jpg
      

      【讨论】:

      • 小心,“!”调整大小的标志忽略纵横比,! 可能是一个特殊的 shell 字符,通常需要转义。
      【解决方案4】:

      如果您在 PHP 上运行您的网站,您可能需要考虑 SLIR 图像调整脚本,它可以很好地调整各种约束(见下文)并缓存结果。

      Parameters:
      w    Maximum width
      h    Maximum height
      c    Crop ratio
      q    Quality
      b    Background fill color
      p    Progressive
      

      http://shiftingpixel.com/2008/03/03/smart-image-resizer/

      http://code.google.com/p/smart-lencioni-image-resizer/

      【讨论】:

        猜你喜欢
        • 2018-07-24
        • 2011-01-07
        • 1970-01-01
        • 2019-04-09
        • 2021-03-06
        • 2011-05-26
        • 1970-01-01
        • 2013-04-12
        • 1970-01-01
        相关资源
        最近更新 更多