`
dcj3sjt126com
  • 浏览: 1885591 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用ImageMagick为你的网站减重(2)

    博客分类:
  • IOS
 
阅读更多

以前写过一篇博客《使用ImageMagick为你的网站减重》,涉及到的手段是:

  1. 在服务器端把图片缩放到合适的尺寸,避免在前端用css缩放图片。
  2. 用imagemagick的strip功能移出图片里的EXIF等多余信息。
  3. 压缩JPEG图片的质量,减少图片体积。

Lossless Compress With image_optim

上面的手段都是针对用户上传的JPEG图片。对于网站自身的banner或logo等图片也可以通过各种工具进行无损压缩来减少图片体积。

image_optim 是一个Ruby的gem,可以组合调用 advpng gifsicle jpegoptim jpegtran optipng pngcrush pngout 等图片优化工具。使用方法非常简单,并且可以看到每个图片优化的大小:

image_optim app/assets/images/*.{jpg,png,gif}

Baseline vs. progressive JPEGs

  1. 浏览器在渲染普通的Baseline类型JPEG是从上到下的。
  2. 而在渲染Progressive类型JPEG是渐进式的,在整个图片还没有加载完,就可以显示整个轮廓,逐渐变清晰,直到最后整张图片渲染完成。

使用Imagemagick转换Baseline JPEG为Progressive JPEG

从上面的两张gif图片演示的效果可以看出,Progressive JPEG渲染的更快,体验更好(个人认为瀑布流网站使用Baseline方式渲染体验更好,因为看起来更像瀑布......)。但是,Baseline JPEG是默认的方式,如果需要Progressive只能强制转换。

convert -interlace plane baseline.jpg progressive.jpg #转换成Progressive JPEG
exiftool progressive.jpg |grep Encoding # 检测转换的结果,如果为Progressive DCT, Huffman coding就说明转换成功。

carrierwave mini_magick processor:

def optimize
  manipulate! do |img|
    img.strip
    img.combine_options do |c|
      c.quality "80"
      # Use Progressive DCT Instead of Baseline DCT.
      c.interlace "plane"
      c.colorspace "rgb" #据说cmyk在IE下有问题,没试过..
    end
    img
end

How to Detect Progressive JPEG

有一种说法是用file或identify命令获取到图片的类型为JFIF即是Progressive JPEG,但是经过多次试验,这个结论不靠谱,最靠谱的是上面使用的exiftool。

相关链接

  1. http://www.codinghorror.com/blog/2005/12/progressive-image-rendering.html
  2. http://www.zhangxinxu.com/wordpress/2013/01/progressive-jpeg-image-and-so-on/
  3. http://www.yuiblog.com/blog/2008/12/05/imageopt-4/
  4. http://hooopo.iteye.com/blog/620498
  5. http://imageoptim.com/
分享到:
评论

相关推荐

    在 Linux 中使用 ImageMagick 命令行操作图像文件.docx

    Linux 中使用 ImageMagick 命令行操作图像文件 在 Linux 中使用 ImageMagick 命令行操作图像文件,可以无需打开图像编辑器进行修改图像文件。convert 命令包含在 ImageMagick 安装包里。ImageMagick 可以安装在 ...

    ImageMagick7.0.8 win64 16安装包下载。使用moviepy抛ImageMagick异常问题解决

    使用ImageMagick的创建,编辑,撰写,或转换位图图像。它可以读取和写入各种格式(超过200种)的图像,包括PNG,JPEG,GIF,HEIC,TIFF,DPX,EXR,WebP,Postscript,PDF和SVG。使用ImageMagick可以调整图像大小,...

    php中ImageMagick安装教程;ImageMagick安装包;ImageMagick安装注意事项;pdf转img

    ImageMagick安装包;ImageMagick安装注意事项;pdf转imgphp中ImageMagick安装教程;ImageMagick安装包;ImageMagick安装注意事项;pdf转imgphp中ImageMagick安装教程;ImageMagick安装包;ImageMagick安装注意事项;...

    Java图片处理解决方案:ImageMagick快速入门教程.docx

    在 Java 中使用 ImageMagick 需要先确认 JDK、Maven 正确安装,然后引入依赖 IM4Java 是 ImageMagick 的 Java API 包,它将 Java 代码转化成对 ImageMagick 的命令行调用。 IM4Java 的作用是将 Java 代码转成对 ...

    phpthumb使用ImageMagick来生成缩略图

    《使用ImageMagick通过phpthumb生成缩略图详解》 在网页开发中,生成缩略图是一项常见的需求,尤其在处理用户上传的图片或者构建图片展示平台时。PHP作为常用的服务器端脚本语言,有着丰富的图像处理库。本文将重点...

    64位Linux安装ImageMagick

    2. **安装依赖**:在安装ImageMagick之前,确保系统已经安装了`gcc`编译器,并安装必要的依赖库,包括`tcl-devel`, `libpng-devel`, `libjpeg-devel`, `ghostscript-devel`, `bzip2-devel`, `freetype-devel`, `...

    Java图片处理工具ImageMagick

    ImageMagick是由C语言编写的,但通过Java的JNI(Java Native Interface)技术,可以无缝集成到Java环境中,为Java开发者提供了丰富的图像处理功能。 ImageMagick的核心功能包括: 1. 图像转换:可以将一种图像格式...

    ImageMagick使用手册

    你可以从官方网站`http://www.imagemagick.org/script/index.php`获取最新版本的安装程序,例如`ImageMagick-6.2.6-8-Q16-windows-dll.exe`,安装完成后将安装路径添加到系统环境变量PATH中,这样可以在命令行中直接...

    ImageMagick安装支持heic格式.docx

    例如,`convert JFIF.heic test1.jpg`将HEIC格式的JFIF.heic转换为JPEG格式的test1.jpg,而`convert test.jp2 test2.jpg`则将JP2格式的图片转换为JPEG格式。 在Java环境中,可以使用JavaMagick或JMagick这样的Java...

    ImageMagick

    ImageMagick是一款强大的开源跨平台图像处理工具,它在IT领域中被广泛使用,尤其在网站开发、自动化脚本和图形设计中。这个工具能够读取、转换和写入多种图像格式,支持超过200种不同的图像文件类型,包括常见的JPEG...

    ImageMagick使用手册-英文原版

    ### ImageMagick 使用手册知识点概览 #### 一、ImageMagick简介 ImageMagick是一款功能强大的开源软件工具集,用于创建、编辑或合成位图图像。它可以在图像上执行的操作包括转换颜色空间、应用模糊、锐化、噪点、...

    ImageMagick-6.9.11-16.tar.gz ImageMagick图像软件下载

    在标题提到的版本“ImageMagick-6.9.11-16.tar.gz”中,我们看到的是一个压缩包文件,其格式为tar.gz,这是一种常见的Linux/Unix系统中的归档和压缩格式。 ImageMagick的主要功能包括但不限于以下几点: 1. 图像...

    python使用moviepy时需要用到的库imagemagick

    安装`imagemagick`通常可以通过访问其官方网站下载对应版本的安装包,例如提供的`ImageMagick-7.1.0-Q16`,这可能是适用于特定平台(如Windows、Linux或macOS)的版本。安装过程中,确保将`imagemagick`的可执行文件...

    linux下可用的静态ImageMagick C库

    总的来说,"linux下可用的静态ImageMagick C库"是一个为Linux开发人员准备的便捷工具,它简化了图像处理功能的集成,避免了依赖管理的复杂性,但仍需要开发者具备一定的C语言和ImageMagick API使用经验。

    WINDOWS下thinkphp5.0+php 7.0使用ImageMagick+Ghostscript把网页面内容转化为png图片

    如果你使用的是GD库,可以使用PHP的`imagepng()`函数来保存生成的图像。但考虑到需要处理HTML和PDF,更推荐使用Imagick扩展,它提供了对ImageMagick更全面的接口。在PHP 7.0中,你可以通过以下步骤安装Imagick扩展:...

    Imagemagick6.8.9-6.9.3

    较低版本的imagemagick,使用 imagemagick的扩展库必须使用比扩展库低的版本才行,包含三个版本。 ImageMagick-6.8.9-6-Q16-x86-dll_.exe ImageMagick-6.9.2-1-Q16-x64-dll.exe ImageMagick-6.9.3-7-vc14-x86.zip

    ImageMagick.tar.gz

    这将创建一个名为`ImageMagick-6.7.5-0`的目录,包含源代码。 2. 进入解压后的目录: ```bash cd ImageMagick-6.7.5-0 ``` 3. 在编译前,确保你的系统已经安装了必要的依赖库,例如: - libjpeg(JPEG支持) - ...

    ImageMagick-7.0.7-11-vc15-x64.zip

    1. **LICENSE**:这是ImageMagick的许可文件,它遵循Apache 2.0许可证,意味着你可以自由地使用、修改和分发该软件,但需遵守一定的条件,如保持原有版权信息。 2. **bin**:这个目录包含了ImageMagick的可执行文件...

    ImageMagick-6.9.3-7-vc11-x64.zip

    如果你打算在PHP中使用ImageMagick,通常会通过PHP的Imagick扩展来调用这些底层功能。通过这个扩展,开发者可以在PHP脚本中方便地进行复杂的图像处理。 `lib`目录包含库文件,这些是ImageMagick的动态链接库(DLLs...

Global site tag (gtag.js) - Google Analytics