iphone后置摄像头像素普遍都高,拍出来的都是几千*几千的尺寸,应用中上传图片时要耗费几兆的流量,肯定不行。但微信, QQ发送图片的时候都会做图片处理,很清晰,储存也小,且分辨率也不低,怎么做的呢?无非是缩小尺寸,改变图片质量,换用.jpg格式。
我手上的应用有个纸质名片扫描功能,两秒出结果,所以要求图片质量高,体积小。这就很考验图片压缩。不多说,先看代码。
//下面的等比系数与质量系数是个人经过大量测试最佳效果
//如果有更好的统一算法欢迎评论。不喜欢迎指教。
CGSize imaageSize=image.size;
imaageSize.width*=0.45
imaageSize.height*=0.45;
image=[self imageWithImage:image scaledToSize:imaageSize];
NSData*imageData=[NSData dataWithData:UIImageJPEGRepresentation(image,0.7)];
image=[UIImage imageWithData:imageData];
//后置摄像头情况下
//这时图片的体积在100k左右(iphone5s下,6多了几十k,plus没有真机),1000*几百的分辨率且清晰
+(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}