关于压缩图片的处理
//从文件中读取图片 UIImage *image = [UIImage imageWithContentsOfFile:@"/Users/owhat/Desktop/test/test/test.jpg"]; //将图片装换成data NSData *data = UIImageJPEGRepresentation(image, 0.8); //要创建一个新图片的保存路径 NSString *path = @"/Users/owhat/Desktop/test111.jpg"; //将新图片写成文件 [data writeToFile:path atomically:YES];
使用上述方法会有问题:
新图片的大小比原来的图片大小还要大。
后来我把压缩系统改成1.0,发现data的字节数大小就比原来的图片文件字节数大。
由此,我得出来一个结论:当把图片读入内存中德时候,大小就会变大,如果此时再把这块内存写入一个新文件 这个新文件大小肯定比原来的大。
但是我不知道为什么?
还有两个方法可以对图片进行压缩:
//压缩的大小~XX-------单位(K) - (NSData *)compressImage:(UIImage *)image toMaxFileSize:(NSInteger)maxFileSize { CGFloat compression = 0.9f; CGFloat maxCompression = 0.1f; NSData *imageData = UIImageJPEGRepresentation(image, compression); while ([imageData length] > maxFileSize*1024 && compression > maxCompression) { compression -= 0.1; imageData = UIImageJPEGRepresentation(image, compression); } return imageData; }
/** * 压缩的比例 * * @param image 传入要压缩的图片 * @param scaleSize 压缩的比例 0~1 * * @return 返回新图片 */ - (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize { UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize)); [image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)]; UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return scaledImage; }

浙公网安备 33010602011771号