如何压缩iPhone中的图像?

时间:2012-03-19 12:13:39

标签: iphone objective-c

我从照片库中拍摄图像。我有4-5 mb的大图像,但我想压缩这些图像。因为我需要将这些图像存储在iphone的本地内存中。因为使用更少的内存或获得更少的内存警告我需要压缩这些图像。

我不知道如何压缩图像和视频。所以我想知道热压缩图像?

    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

    NSData* data = UIImageJPEGRepresentation(image,1.0);
    NSLog(@"found an image");

    NSString *path = [destinationPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.jpeg", name]];
    [data writeToFile:path atomically:YES]; 

这是保存图像的代码。我不想将整个图像存储得太大。因此,我想将其压缩到更小的尺寸,因为我需要附加多个图像。

感谢您的回复。

3 个答案:

答案 0 :(得分:12)

您可以为JPEG编码选择较低的质量

NSData* data = UIImageJPEGRepresentation(image, 0.8);

像0.8这样的东西不应该太明显,应该真正改善文件大小。

除此之外,请在使用如下方法进行JPEG表示之前调整图像大小:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
    UIGraphicsBeginImageContext(newSize);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();
    return newImage;
}

来源:The simplest way to resize an UIImage?

答案 1 :(得分:5)

UIImageJPEGRepresentation(UIImage的,质量);

1.0表示最高质量,0表示最低质量。

SO更改下面一行的质量参数以减小图像的文件大小

NSData* data = UIImageJPEGRepresentation(image,1.0);

答案 2 :(得分:1)

NSData *UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality);

OR

NSData *image_Data=UIImageJPEGRepresentation(image_Name,compressionQuality);

以JPEG格式返回图片。如果图像没有CGImageRef或无效的位图格式,则可能返回nil。 compressionQuality为0(大多数)& 1(至少)。