【问题标题】:reduce camera/photo library image file size for less than 100 KB in iphone在 iphone 中将相机/照片库图像文件大小减少到 100 KB 以下
【发布时间】:2012-12-14 15:16:28
【问题描述】:

我想减小从 UIImagePickerController 获取的图像文件大小。我用这个方法

NSData *imageData = UIImageJPEGRepresentation(image, 0.1);

但它会将 2.2 MB 的图像文件大小减少到 300 KB 我希望我的图像文件大小小于 100 KB。

【问题讨论】:

标签: ios iphone image uiimage image-size


【解决方案1】:

Apple 的文档状态:

生成的 JPEG 图像的质量,表示为从 0.0 开始的值 到 1.0。值 0.0 表示最大压缩(或最低 质量),而值 1.0 表示压缩最少(或最好 质量)。

而且由于压缩质量是 CGFloat,它支持十位以上的小数位。话虽如此,请尝试:

NSData *imageData = UIImageJPEGRepresentation(image, 0.032);

【讨论】:

  • 不小于 300 kb
【解决方案2】:

以公斤为单位减小图像大小的最简单方法是以像素为单位减小大小!缩小:

CGFloat scaleSize = 0.2f;
UIImage *smallImage = [UIImage imageWithCGImage:image.CGImage
                      scale:scaleSize
                      orientation:image.imageOrientation];

【讨论】:

  • 没错!即使在最高压缩级别下,jpeg 格式的大图像也无法缩小到 100K,因此想法是调整其大小,然后对其进行压缩。
  • @Lefteris 我使用这种方法,而不是 0.2 作为 scalesize 我将它设置为 5 以将图像大小减小 5 倍,然后使用以前的方法,但文件大小没有改变。
  • 比例 1(一)表示与原始图像大小相同。您应该使用小于 1 的值,而不是更大的值。
  • 此方法返回完全相同的图像,但密度不同,保持相同的文件大小
【解决方案3】:

先用以下方法调整图片大小:

- (UIImage *)resizeImage:(UIImage*)image newSize:(CGSize)newSize {
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

通过以下方式调用:

UIImage *newImage=yourImage;
CGSize size=CGSizeMake(newImage.size.width/8,newImage.size.height/8);
newImage=[self resizeImage:newImage newSize:size];

最后根据需要压缩你的图片:

NSData *imageData = UIImageJPEGRepresentation(newImage, 0.5);
NSLog(@"Size of image = %lu KB",(imageData.length/1024));

【讨论】:

    猜你喜欢
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多