现在基本所有应用都与图片相关联,这就必然涉及到上传下载图片,而用户的流量又迟迟没有被解放,因此图片就不能太大,我们知道iPhone一张照片动辄几M,如果都传原图那流量就会爆炸,粗暴地缩小又会影响图片的分辨率。那有没有办法在保持一定分辨率的情况下压缩图片呢?有的,而且非常简单,一行代码搞定,是苹果自带的压缩函数:
- UIImageJPEGRepresentation
- UIImagePNGRepresentation
这两个函数都是iOS自带的图片压缩工具。一个是压成JPEG格式,一个是压成PNG格式。一般来说,JPEG格式压缩出的图片的大小都会小于PNG格式的。
UIImageJPEGRepresentation函数传入两个参数,要压缩的图片UIImage以及一个压缩系数(0.0~1.0)。
而UIImagePNGRepresentation只需要传入一个参数,即要压缩的图片UIImage。
两个函数都返回NSData格式的数据,要还原成图片的话直接用UIImage的imageWithData方法初始化就可以啦。
再谈谈压缩效果,上面说了,UIImageJPEGRepresentation压缩后的大小一般都会小于UIImagePNGRepresentation格式。就我的测试结果来看,UIImagePNGRepresentation压缩一张图片后是几百K,UIImageJPEGRepresentation压缩后只有一百多K,如果将压缩系数写为0.5,更是能压缩到几十K的大小,而且图片的清晰度肉眼基本看不太出来,不得不说简直是神器!所以,如果没有别的要求,直接用UIImageJPEGRepresentation疯狂地压缩吧,根据效果来调整系数达到最好的结果就可以了~