开发者社区> 云栖希望。> 正文

ImageMagick 压缩图片 方法

简介:
+关注继续查看

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里非常easy的。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 压缩图片 方法,如需转载请自行联系原博主。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MFC+OPENCV实现JPEG图片的播放
用vc6.0进行开发真的有点蛋疼,在实现jpeg图片的播放,vc6.0的picture控件居然只支持位图>_< 开始想法是在程序中加一个编码过程,边读图边解码边显示,先将JPEG图片转化为位图再显示,但代价是在OPENCV中的自带的函数支持编解码,但要先写下来,所以读写再度时间较长无法满足实时性的要求; 第二种方法是用VTK中带的vtkJPEGReader类,
1781 0
使用jpeglib库实现bmp转jpg
一、vc编译jpeglib库 1、下载源代码 下载地址:http://www.ijg.org/。注意:一定要下载win32 版本 2、编译源代码.     A、解压源代码,修改源代码中jconfig.
941 0
使用ImageMagick + Jmagick进行图片操作(续2)——实现高质量的图片处理
在前面的两篇文章中,只记录了分别在Linux和Window上的安装过程: 使用ImageMagick + Jmagick进行图片操作 使用ImageMagick + Jmagick进行图片操作(续)   关于JMagick的应用在网上内容比较少,这次分享一下我的缩放图片和黑白效果的代码...
799 0
使用ImageMagick + Jmagick进行图片操作(续)
    由于没有图形化界面的支持,在Linux(CentOS 5.4 x64)上的配置相对Windows XP还是麻烦了一点。         1、下载ImageMagick和JMagick的源文件(http://downloads.jmagick.org/6.4.0/):ImageMagick-6.4.0.-0tar.gz 和 jmagick-6.4.0-src.tar.gz。
795 0
使用ImageMagick + Jmagick进行图片操作
      几年前曾经使用过这个开源的ImageMagick来进行图片大小转化、提取Exif信息等操作,功能强大,比较实用,当时也花了不少的精力。这两天又要用,这次先把过程记下来。       1. 首先给出这个地址:http://downloads.jmagick.org/6.3.9/,这个里面包含了ImageMagick的安装文件、jmagick.dll和jmagick.jar,最关键的是它们是版本一致的,不会出现一些奇怪的问题。
1110 0
+关注
云栖希望。
我是个随便的人
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载