gpt4 book ai didi

objective-c - 使用UIImagePickerController获取图片——如何判断保存的是PNG还是JPEG?

转载 作者:可可西里 更新时间:2023-11-01 03:47:52 31 4
gpt4 key购买 nike

我有一个 UIImagePickerController 让用户从图片库中选择一张图片,并通过 didFinishPickingMediaWithInfo 方法获取结果。

我需要能够将生成的图像保存到磁盘(在应用程序的文档文件夹中),并在以后重新加载它。

问题是我不知道是将其存储为 PNG 还是 JPEG。我不能总是将它存储为 PNG,因为对于较大的照片,它的速度非常慢(更不用说我必须单独处理存储图像方向)。我不能总是将它存储为 JPEG,因为在某些情况下,图像具有透明度,如果我这样做,它会丢失。

我检查了图像选择器返回的信息字典中的 UIImagePickerControllerMediaType 键,无论我选择的是 PNG 还是 JPEG,返回的都是 "image.公共(public)”

所以...

有什么方法可以知道用户是否选择了 PNG?也许只是检查图像是否具有透明度之类的某种方法?

谢谢。

最佳答案

好吧,我想通了。这可能不适用于所有情况,但对我来说已经足够了:

    CGImageAlphaInfo imgAlpha = CGImageGetAlphaInfo(theImage.CGImage);

// Is this an image with transparency (i.e. do we need to save as PNG?)
if ((imgAlpha == kCGImageAlphaNone) || (imgAlpha == kCGImageAlphaNoneSkipFirst) || (imgAlpha == kCGImageAlphaNoneSkipLast)) {
// save as a JPEG
} else {
// save as a PNG
}

...当然,您需要记住保存的图像类型,给它适当的文件扩展名,然后加载正确的文件...但基本上这就搞定了。具有透明度的图像将保存为 PNG,其他所有内容将保存为 JPEG。

如果有人有更好的方法,我很想听听。谢谢!

关于objective-c - 使用UIImagePickerController获取图片——如何判断保存的是PNG还是JPEG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11270335/

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