上次发布了将图片等比压缩到指定尺寸(http://blog.csdn.net/txz_gray/article/details/52312636),但是如果原图太宽或太高,压缩实际上是截取了中间的一部分,并不能保存全图。
这次是根据屏幕尺寸来压缩图片,可等比保存全图。代码如下:
/**
* 上传原图
*
* @param image 传过来的图片
*
* @return 返回的图片
*/
- (UIImage*)imageCompressWithSimple:(UIImage*)image{
CGSize size = image.size;
CGFloat scale = 1.0;
//TODO:KScreenWidth屏幕宽
if (size.width > KScreenWidth || size.height > KScreenHeight) {
if (size.width > size.height) {
scale = KScreenWidth / size.width;
}else {
scale = KScreenHeight / size.height;
}
}
CGFloat width = size.width;
CGFloat height = size.height;
CGFloat scaledWidth = width * scale;
CGFloat scaledHeight = height * scale;
CGSize secSize =CGSizeMake(scaledWidth, scaledHeight);
//TODO:设置新图片的宽高
UIGraphicsBeginImageContext(secSize); // this will crop
[image drawInRect:CGRectMake(0,0,scaledWidth,scaledHeight)];
UIImage* newImage= UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
这里的上传原图只是在相册图片的基础上再次压缩,但是图片不会失真。
原文链接:http://blog.csdn.net/haitao0692/article/details/51211489