UIImageJPEGRepresentation(newImage, 0.5);第一个系数 是对于的图片,第二个对应的压缩系数。在相同的压缩系数下 使用UIImagePNGRepresentation(newImage, 0.5) 产生的图片大小 会比第一个大一个,可以自由的选择0 ~ 1 的压缩系数。
如果在采用压缩系数 还是不够好的情况下,可以适当的裁剪图片的尺寸大小,对应相应的CGSize ,如果size过小的情况,图片显示会非常模糊,所以 两者要协调好。
- (NSData *)imageWithImage:(UIImage*)image
scaledToSize:(CGSize)newSize;
{
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return UIImageJPEGRepresentation(newImage, 0.25);
}
在选择照片的时候 也可以使用GCD处理 再在主线程刷新//参考以下 图片大小处理
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
for (int i=0; i<assets.count; i++) {//选择的照片 假设在相册中选择多张
ALAsset *asset=assets[i];
UIImage *tempImg=[UIImage imageWithCGImage:asset.defaultRepresentation.fullScreenImage];
float max_image_size = 150;//设定最大图像 大小
NSData *imageData = nil;
for (int i=0;i<10;i++){//在1- 10 中取到最合适和压缩系数
@autoreleasepool {
imageData = UIImageJPEGRepresentation(tempImg, 1.0f-(float)i*.1f);
if (imageData.length<max_image_size*1024){
break;
}
}
}
[_aryPics addObject:[UIImage imageWithData:imageData]];
dispatch_async(dispatch_get_main_queue(), ^{//刷新界面
//.....
});
}
});
}
}
}