UIImagePNGRepresentation增加输出文件大小而不是减小大小

3

如果我们使用UIImagePNGRepresentation将JPEG文件转换,那么新文件的大小会更大。 如果我们使用UIImagePNGRepresentation将PNG文件转换,那么新文件的大小会更小。

为什么在这里将JPEG转换为PNG成本更高呢?

谢谢Jithen


你正在加载一个png文件,然后将其保存为png格式。这是你想要的吗?你看到了文件大小上的差异吗? - David Haynes
是的。加载一个png文件并将其保存为新的png文件。但是新的png文件大小比原始的png文件要大。原始文件大小为155 kb,而新文件大小约为266 kb。 - Coder
https://dev59.com/W2Yq5IYBdhLWcg3whRDV - Rushabh
1个回答

3
为了减小图片的大小,您可以使用以下代码:

减小图像大小的方法如下:

CGFloat compression = 222.0f;
CGFloat maxCompression = 202.1f;
int maxFileSize = 160*165; //fill your size need

NSData *imageDat = UIImageJPEGRepresentation(image.image, compression);

while ([imageDat length] > maxFileSize && compression > maxCompression)
{
compression -= 0.1222;
imageDat = UIImageJPEGRepresentation(decodedimage.image, compression);
}
NSLog(@"image compressed success");

[image setImage:[UIImage imageWithData:imageDat]];//image is my UIImageview

希望这有所帮助!!!

是的,按照相同的步骤进行操作...但作为另一种方法,我可以将所有图像转换为PNG格式,因为PNG通常是较小的图像..所以我想知道为什么转换后大小会变大.. - Coder
1
@Vishnu,你的方法返回了一个压缩的JPG格式...而提问者想要一个压缩的PNG格式。 - Albert Renshaw
@jithen 我想到的解决方案是使用PHP创建一个PNG(因为PHP允许PNG压缩(0-9)),并使用UIWebView在iOS应用程序中执行php! - Albert Renshaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接