使用SWT处理图片的大小和分辨率

本文介绍了一种基于SWT的图片压缩方法,通过调整图片分辨率并转换为JPEG格式,成功将图片大小压缩至100KB左右,同时保持了足够的清晰度以便识别车辆牌照。

   以前研究过AWT的图像处理,知道AWT在图像处理方面的功力不浅,特别是在3D图像处理非常擅长,不过就是API不怎么可爱,使用起来还是比较麻烦,还是觉得SWT的API比较亲切,我个人对SWT也是非常感兴趣,而且我们的项目也是基于SWT的。

 <!--endfragment-->

   压缩图片方式要么是将格式进行转换,比如将bmp格式转换成jpeg格式的,这种方式是通过损失图片质量来达到的压缩的目的,不过jpeg格式的图片还是比较清晰,不仔细看根本看不出什么差别。还有一种是调整图片的分辨率,现在的数码相机拍出来的照片分辨率都很高,我从办事处采集的图片发现大多数图片格式是 3264 * 2448,大小在2.5mb左右,如果不进行压缩处理就进行上传,那服务器肯定受不了,经过开会讨论,觉得图片大小控制在100kb左右比较能让服务器和用户接受,而且要看的清楚照片中车辆的车牌号。

<!--endfragment-->

 

  这并不是什么 "不可能完成的任务" ,在我的机器上测试通过,为了方便起见,分辨率统一调成800x600,发现图片质量还过得去:

 

名称

压缩前分辨率

压缩前大小(kb)

压缩后大小(kb)

阿斯顿马丁One-77 P10.bmp

1027 x 768

1537

85

豫P460xx.JPG

3264 x 2448

2083

48

IMG_1338.jpg

2736 x 3648

4428

72

<!--endfragment-->

  

  压缩后的格式都是JPEG格式的.

 

  我使用的压缩代码是这样实现的:

<!--endfragment-->

ImageData newImageData = new ImageData("C:/imgzip/压缩前的图片.jpg").scaledTo(800600);
ImageLoader imageLoader 
= new ImageLoader();
imageLoader.data 
= new ImageData[] {newImageData};
imageLoader.save(
"C:/imgzip/压缩后的图片.jpg",SWT.IMAGE_JPEG);

 

先将图片路径传入到ImageData的构造方法中构造一个ImageData对象,这个ImageData对象用于描述图片的属性,比如图片的像素、大小、尺寸等信息,可以通过ImageData的scalaTo(int  width ,int height)方法完成图片大小缩放,然后使用ImageLoader这个类将图片保存到指定的路径,还可以指定保存的格式。

<!--endfragment-->

  

   很简单吧,说实话,我不是很相信使用AWT能够通过这么简单的方式完成图片大小的缩放和压缩,当然我是指AWT的元素API。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值