centos6.5 安装ImageMagick&java使用ImageMagick压缩图片

一 安装ImageMagick

1.安装依赖库

yum install libjpeg* libpng* freetype* gd*

2.安装ImageMagick

yum install ImageMagick

3.测试安装是否成功

convert -quality 75% 1.jpg zoom.jpg

 

二 java中使用ImageMagick

1.导入jar包

<dependency>
    <groupId>org.im4java</groupId>
    <artifactId>im4java</artifactId>
    <version>1.4.0</version>
</dependency>

2.在代码中使用ImageMagick进行压缩图片

IMOperation operation = new IMOperation();
operation.addImage(orgfileName);
operation.quality(0.75);
operation.addImage(zoomfileName);
ConvertCmd cmd = new ConvertCmd();
cmd.run(operation);

3.检查运行结果

图片被正常压缩,省时省力。

 

三  使用ImageMagick的常用的方式

1.对用户生成的图片进行压缩

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

用ImageMagick处理起来很简单 

convert -resize “500x300>“ input.jpg  output.jpg #如果图片比500x300小就保持原样,以防小图片被放大失真。    

 

2.生成不同比例的缩略图

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

3.去除多余信息

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

convert -strip input.jpg output.jpg    

 

4.调节压缩比例

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

convert -quality 75% input.jpg output.jpg   

 

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

convert -resize “500x300” -strip -quality 75% input.jpg output.jpg    

 

5.BMP,GIF,PNG等格式的处理

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

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

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://blog.csdn.net/Rylan11/article/details/76850667

 

Java 图片处理解决方案:ImageMagick 快速入门

http://www.cnblogs.com/chanshuyi/p/quick_start_of_image_magick.html

 

 

 

转载于:https://my.oschina.net/aslanjia/blog/1580745

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值