iphone后置攝像頭像素普遍都高奢方,拍出來(lái)的都是幾千*幾千的尺寸搔扁,應(yīng)用中上傳圖片時(shí)要耗費(fèi)幾兆的流量,肯定不行蟋字。但微信稿蹲, QQ發(fā)送圖片的時(shí)候都會(huì)做圖片處理,很清晰鹊奖,儲(chǔ)存也小苛聘,且分辨率也不低,怎么做的呢忠聚?無(wú)非是縮小尺寸设哗,改變圖片質(zhì)量,換用.jpg格式两蟀。
我手上的應(yīng)用有個(gè)紙質(zhì)名片掃描功能网梢,兩秒出結(jié)果,所以要求圖片質(zhì)量高赂毯,體積小战虏。這就很考驗(yàn)圖片壓縮拣宰。不多說(shuō),先看代碼烦感。
//下面的等比系數(shù)與質(zhì)量系數(shù)是個(gè)人經(jīng)過(guò)大量測(cè)試最佳效果
//如果有更好的統(tǒng)一算法歡迎評(píng)論巡社。不喜歡迎指教。
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];
//后置攝像頭情況下
//這時(shí)圖片的體積在100k左右(iphone5s下手趣,6多了幾十k晌该,plus沒(méi)有真機(jī)),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;
}