J'essaie de sauvegarder une image dans le format de fichier HEIC en utilisant ImageIO. Le code ressemble à ceci:Quelle est la manière formelle de vérifier si mon appareil est capable d'encoder des images au format 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;
}
Cela fonctionne sur les appareils avec A10, mais échoue sur les appareils plus anciens et sur le simulateur (également selon Apple), en omettant d'initialiser le destination
et le message d'erreur findWriterForType:140: unsupported file format 'public.heic'
. Je n'ai pas trouvé de moyen direct de tester si le matériel supporte HEIC sans initialiser une nouvelle destination d'image et tester la nullabilité.
Il existe des API basées sur AVFoundation pour vérifier si les photos peuvent être enregistrées en utilisant HEIC, par exemple en utilisant -[AVCapturePhotoOutput supportedPhotoCodecTypesForFileType:]
, mais je ne veux pas initialiser et configurer une session de capture juste pour cela.
Existe-t-il un moyen plus direct de voir si le matériel prend en charge ce type de codage?