gpt4 book ai didi

ios - 如何在 iOS 中以较低的压缩率重新创建 UIImage?

转载 作者:可可西里 更新时间:2023-11-01 04:22:59 25 4
gpt4 key购买 nike

我有代码可以在质量很差的情况下重新创建高质量图像,但我对看到的结果感到有点困惑。代码在这里:

NSData *compressedData = UIImageJPEGRepresentation(bigImage,0);
NSLog(@"compressedData length = %d", [compressedData length]);
self.currentImage = [UIImage imageWithData:compressedData];
NSData *dataAfterCompression = UIImageJPEGRepresentation(self.currentImage,1);
NSLog(@"dataAfterCompression length = %d", [dataAfterCompression length]);

哪些输出:

2012-01-02 02:47:05.615 MyApp[349:707] compressedData length = 32671
2012-01-02 02:47:06.143 MyApp[349:707] dataAfterCompression length = 251144

为什么使用低质量数据创建新图像会产生如此大的图像?

最佳答案

UIImageJPEGRepresentation 的输入是一个二维像素数组,而不是创建该二维数组的压缩数据。 (数组可能根本不是来自压缩数据!)UIImageJPEGRepresentation对图像的来源一无所知,也对其输入的“质量”没有任何概念。它只知道您希望它非常努力地使输出变小(当 compressionQuality 为零时)或者您希望它非常努力地使输出准确(当 compressionQuality 为一时)。

JPEG 压缩算法有一些可调参数。 compressionQuality值选择一组这些参数。当你设置 compressionQuality为 1,压缩器使用一组参数,无论输入数据实际是什么,都允许输入数据的准确性损失很小。对于任何输入数据,这些参数导致的准确性损失很小。权衡是这些参数也会导致非常小的压缩。然后压缩器不会想“嗯,我应该尝试使用其他参数,看看我是否可以通过更好的压缩获得相同的精度”。如果那是你想要的,你必须自己做。

关于ios - 如何在 iOS 中以较低的压缩率重新创建 UIImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8698551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com