使用ImageMagick如何对图片进行全面压缩

转载 2015年11月19日 15:12:06

Images as a percentage of page weight for the Alexa top 10 global web sites 

图片在网站所占的比重越来越重。更好的优化图片可以提高网站速度。减少宽带流量。 

1.对用户上传图片进行缩放 

    对于用户自己上传的图片不能简单的 用css限制大小,因为这样每次加载图片时候还是会加载整幅大图。占用多余的宽带,并且影响页面加载速度。应该根据实际显示需要进行缩放。比如我想要用户相册里的图片大小不能超过500x300: 

用ImageMagick处理起来很简单 

[html] view plaincopy
  1. convert -resize "500x300>" input.jpg  output.jpg #如果图片比500x300小就保持原样,以防小图片被放大失真。    

2.生成不同比例缩略图 

    一般相册等应用,都会提供缩略图和预览图,这些缩略图同样不能简单的用css来限制大小,要为每个图片生成不同比例的预览图。 

3.去除多余信息 

    Exif信息是数码相机在拍摄过程中采集的一系列信息,这些信息放置在我们熟知的jpg文件的头部,也就是说Exif信息是镶嵌在JPEG图像文件格式内的一组拍摄参数,主要包括摄影时的光圈、快门、ISO、日期时间等各种与当时摄影条件相关的讯息,相机品牌型号,色彩编码,拍摄时录制的声音以及全球定位系统(GPS)等信息。简单的说,它就好像是傻瓜相机的日期打印功能一样,只不过Exif信息所记录的资讯更为详尽和完备。不过,具有Exif信息的JPEG图像文件要比普通的JPEG文件略大一点。还有就是像PS这种软件处理过的图片会有“program comments”。如果不是专业的摄影类网站,这些信息是没有用的,可以去掉: 

[html] view plaincopy
  1. convert -strip input.jpg output.jpg    

4.调节压缩比 

    大多时候,我们的网站并不需要那么清晰的图片,适量调节JPG图片的压缩比会减少图片大小,肉眼并不会分辨出质量被压缩后的图片。通常75%是最佳比例。 

[html] view plaincopy
  1. convert -quality 75% input.jpg output.jpg    

上面几个步骤可以一次搞定: 

[html] view plaincopy
  1. convert -resize "500x300" -strip -quality 75% input.jpg output.jpg    

上面说的都是针对JPG格式的处理方式,下面说一下BMP,GIF,PNG等格式的处理。 


对于BMP直接转成JPG就可以了。再按照上面的方式处理。 

而GIF和PNG貌似有些特殊。GIF的一些特性(动画效果,透明等)是JPG没有的,可以根据实际情况选择转或不转,如果转换成jpg,取第一帧只需要这样: 

[html] view plaincopy
  1. convert -format jpg input.gif input.jpg   

PNG也可以通过减少PNG图片color数量的办法达到压缩的目的。但是这种办法压缩出来的图像可以明显看出来失真,而且呈锯齿状。 


对于真实世界的PNG图片(通常指照片),一般先转换成JPG,再通过上面的办法来压缩。 

但是要注意一点,透明或半透明的PNG图片在转换成JPG时透明部分会变成黑色。。。建议做用户头像时候不要转成JPG。。很难看~~~ 
本人头像就是深受毒害。。 

关于图片扩展名 

发现大部分网站喜欢把用户上传的图片(头像,相册等)都统一转成特定格式(一般都是jpg)。这样做的潜在弊端就是在用像ImageMagick这样的软件处理的时候会根据扩展名做隐式格式转换。 
个人觉得在保存图片的时候不加扩展名处理起来更灵活一些。 

注:把上面的命令行用mini_magick改写用到rails里很容易的。mini_magick本质就调用系统命令行嘛~~ 

links: 
本文所说的都是对用户上传的图片处理,对网站自身的图片(header,banner等)处理《Even Faster Websites》一书第十章里面写的很详细了: 
http://www.graphics.com/modules.php?name=Sections&op=viewarticle&artid=756 

更多ImageMagick用法: 
http://www.imagemagick.org/script/index.php 

使用ImageMagick如何对图片进行全面压缩

http://bbs.gxsd.com.cn/forum.php?mod=viewthread&tid=253184&page=1&authorid=11518 ...
  • jeffasd
  • jeffasd
  • 2015年11月19日 15:10
  • 906

使用ImageMagick对图片进行全面压缩

imageMagick
  • Rylan11
  • Rylan11
  • 2017年08月07日 16:19
  • 483

用ImageMagick转换缩小JPG图像提高图像质量的方法

利用无损图片格式做jpg图像缩小的过渡格式,再转换为jpg格式,可以充分保障图片质量损失不大 前久弄了个工业相机,定时拍照,转换到网页查看。 但是这个相机是1000万像素的,放在网页或用手...
  • jessezappy
  • jessezappy
  • 2016年12月28日 19:00
  • 2789

用ImageMagick中的convert以及其它的gifsicle对GIF动态图片进行尺寸修改

为了方便在线交流,高清大图的GIF往往需要改小,如果逐帧修改则太麻烦. ImageMagick中的convert可以完成这个工作, 点击打开链接 11down voteaccept...
  • stereohomology
  • stereohomology
  • 2015年04月11日 19:50
  • 3228

图片处理神器ImageMagick以及PHP的imagick扩展

为了提高页面的加载速度,以及减少流量,要针对网站的图片进行瘦身,研究了很多的解决方案,最后确定了使用ImageMagick,了解了这个软件之后,真是如获至宝,简直太好用,效果太明显了。 ImageMa...
  • andy1219111
  • andy1219111
  • 2014年08月01日 15:16
  • 41173

后台使用imagemagick的convert命令来处理图片真是太方便了。

convert功能强大,用来处理图片的fang'd
  • yuxiangji
  • yuxiangji
  • 2014年05月04日 14:35
  • 12216

ImageMagick压缩图片

Pure java的图片操作,不依赖操作系统的功能,图片运算量比较大,如果批处理图片或图片size较大的话(如1M左右的图片)的话,性能肯定不能满足;用JNI(java本地调用),依赖操作系统提供的功...
  • wushuchu
  • wushuchu
  • 2015年11月26日 11:00
  • 314

后台使用imagemagick的convert命令来处理图片真是太方便了。

转自:http://blog.csdn.net/pb09013037/article/details/44221809 imagemagick文档:http://www.imagem...
  • haima1998
  • haima1998
  • 2017年06月30日 10:51
  • 449

ImageMagick--往图片上写文字

为了在文件上写文字,话费了一天的时间,都快崩溃了,其实可以有两种写法:一种是自己实现,对指定的点进行修改像素值,一种是直接用库中的函数进行写文字;当然所有人都希望用库中的函数,既方便又好用,但是事情的...
  • txgc0
  • txgc0
  • 2013年11月06日 18:13
  • 4777

imagemagick图片裁剪

为了减少图片带来的网络带宽的开销,决定裁剪图片。imagemagick这个库很好用。 ImageMagick是用C语言开发图片处理程序。可以对图片进行改变大小、旋转、锐化、减色或增加特效等操作。...
  • zkaipmoo
  • zkaipmoo
  • 2013年09月13日 01:40
  • 2060
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用ImageMagick如何对图片进行全面压缩
举报原因:
原因补充:

(最多只允许输入30个字)