iOS图片压缩
iOS图片压缩
在开发中,我们经常会遇到需要上传图片到服务器上,如果图片过大就会消耗大量的时间,对于图片大小的处理分两个方面,一个是图片尺寸,一个是图片的所占内存的大小
- (NSData *)compressedImageDataWithImage:(UIImage *)img
{
CGFloat compressFraction = 0.8; // 尺寸压缩比例
CGSize imageSize = img.size;
CGFloat newWidth;
CGFloat newHeight;
if (imageSize.height > IMAGE_MAX_HEIGHT) {
compressFraction = compressFraction*IMAGE_MAX_HEIGHT/imageSize.height;
}
if (imageSize.width*compressFraction > IMAGE_MAX_WIDTH) {
compressFraction = compressFraction*IMAGE_MAX_WIDTH/imageSize.width;
}
newHeight = (imageSize.height)*compressFraction;
newWidth = (imageSize.width)*compressFraction;
CGSize newSize = CGSizeMake(newWidth, newHeight);
// Create a graphics image context // 创建图片上下文
UIGraphicsBeginImageContext(newSize);
// Tell the old image to draw in this new context, with the desired
// new size 根据新大小重新绘制图片
[img drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
// Get the new image from the context
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
// End the context
UIGraphicsEndImageContext();
// 压缩图片的大小
return UIImageJPEGRepresentation(newImage, 0.7); // 0.7是内存压缩比例
}