【问题标题】:How to compress size of UIImage to a certain size (in KB) [duplicate]如何将 UIImage 的大小压缩到一定大小(以 KB 为单位)[重复]
【发布时间】:2014-06-28 00:49:34
【问题描述】:

在我的应用程序中,我有一个用户选择/拍照,然后转到此方法(标准内容):

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

现在,我怎样才能将图像缩小到一定的文件大小(我希望它缩小到大约 80-90 kb 的某个位置)。

【问题讨论】:

    标签: ios objective-c uiimage xcode5 nsdata


    【解决方案1】:

    有点粗糙:

    UIImage *image = (UIImage *)info[UIImagePickerControllerEditedImage];
    NSData *data;
    for (CGFloat quality = 1.0; CGFloat >= 0; CGFloat -= 0.05)
    {
        data = UIImageJPEGRepresentation(image,quality);
        if (data.length < 90000)
            break;
    }
    

    可能相当占用 CPU。可能有更好的方法可以更快地找到理想的质量。

    【讨论】:

    • 我会使用二分搜索,但你已经了解了大致的想法。
    • 也许你也应该解释一下缩放。将完整的相机尺寸图像压缩到 90KB 可能会导致质量非常差。
    • @vikingosegundo 确实如此,但大小和质量之间的权衡取决于实施者。
    • 这个问题本身表明 OP 没有过多考虑 UIImage 是什么以及文件大小(如果这是他所说的)与图像表示的关系。因此,期望对权衡取舍进行有根据的猜测可能有点沉重。
    • @crazyshark,它根据图像的内容变化很大。具有单一颜色或轻微渐变的大表面的图片将比具有大量非常精细细节的图片压缩得多。
    猜你喜欢
    • 1970-01-01
    • 2014-02-19
    • 2015-02-10
    • 1970-01-01
    • 2020-04-20
    • 2019-04-22
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    相关资源
    最近更新 更多