gpt4 book ai didi

ios - 验证我的设备是否能够以 HEIC 格式编码图像的正式方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 03:45:09 24 4
gpt4 key购买 nike

我正在尝试使用 ImageIO 以 HEIC 文件格式保存图像。代码看起来像这样:

NSMutableData *imageData = [NSMutableData data];

CGImageDestinationRef destination = CGImageDestinationCreateWithData(
(__bridge CFMutableDataRef)imageData,
(__bridge CFStringRef)AVFileTypeHEIC, 1, NULL);
if (!destination) {
NSLog(@"Image destination is nil");
return;
}

// image is a CGImageRef to compress.
CGImageDestinationAddImage(destination, image, NULL);
BOOL success = CGImageDestinationFinalize(destination);
if (!success) {
NSLog(@"Failed writing the image");
return;
}

这适用于配备 A10 的设备,但在旧设备和模拟器(也根据 Apple)上失败,原因是无法初始化 destination 和错误消息 findWriterForType:140:不支持的文件格式“public.heic”。在不初始化新图像目标和测试可空性的情况下,我找不到任何直接的方法来测试硬件是否支持 HEIC。

有基于 AVFoundation 的 API 用于检查是否可以使用 HEIC 保存照片,例如使用 -[AVCapturePhotoOutput supportedPhotoCodecTypesForFileType:],但我不想只初始化和配置捕获 session 为此。

有没有更直接的方法来查看硬件是否支持这种编码类型?

最佳答案

快速版本:

func supports(type: String) -> Bool {
let supportedTypes = CGImageDestinationCopyTypeIdentifiers() as NSArray
return supportedTypes.contains(type)
}

然后用您喜欢的类型调用它(例如 AVFileTypeHEIC):

if #available(iOS 11.0, *) {
supports(type: AVFileTypeHEIC)
}

关于ios - 验证我的设备是否能够以 HEIC 格式编码图像的正式方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45905880/

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