41278


初心者の質問で、情報に不足あるかもしれませんが、ご容赦頂きたく存じます。  
■質問  
HEIF→JPEGに変換してくれる公式なインターフェースは存在しますでしょうか？  
ネットで色々と調べては見たのですが、そのような情報が見つからず  
存在しないような気が致しました。


CC BY-SA 3.0
2018-01-26T07:47:29.550
41223
2018-01-29T05:18:17.823
2018-01-26T09:07:23.040
76
27141
question
swift objective-c
HEIFからJPEGに変換する公式のインターフェイス


私も探しましたがありませんでした。  
今の所自分で変換するようにしています。

[code]

    NSData *imageData = [imageInfo objectForKey:@"imageData"];
    if([[ext lowercaseString] isEqualToString:@"heic"]) {
        NSLog(@"HEIC Image convert.");
        CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
        NSDictionary *metadata = (__bridge NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source,0,NULL);
        NSMutableDictionary *metadataAsMutable = [NSMutableDictionary dictionaryWithDictionary:metadata];
        NSMutableDictionary *exifDictionary = [[metadataAsMutable objectForKey:(NSString *)kCGImagePropertyExifDictionary]mutableCopy];
    
        UIImage *image = [UIImage imageWithData:imageData];
        NSMutableData *timageData = [[NSMutableData alloc] init];
    
        CGImageDestinationRef dest = CGImageDestinationCreateWithData((CFMutableDataRef)timageData, kUTTypeJPEG, 1, nil);
        NSMutableDictionary *tmetadata = [NSMutableDictionary dictionary];
    
        [tmetadata setObject:exifDictionary forKey:(NSString*)kCGImagePropertyExifDictionary];
    
        CGImageDestinationAddImage(dest, image.CGImage, (CFDictionaryRef)tmetadata);
        CGImageDestinationFinalize(dest);
        CFRelease(dest);
    
        // カメラロールに保存
        SEL sel = @selector(savingImageIsFinished:didFinishSavingWithError:contextInfo:);
        UIImageWriteToSavedPhotosAlbum(image, self, sel, nil);
    }
    
[/code]


CC BY-SA 3.0
2018-01-28T17:06:46.843
41270
2018-01-28T17:06:46.843
7403
41223
answer


ALAssetは割と昔にDeprecatedですが一応参考ソースを。

[code]

    NSString *asset_uri = [@"assets-library:" stringByAppendingString:asset_url];
    NSURL *asseturl = [NSURL URLWithString:asset_uri];
    
    ALAssetsLibrary *assetslibrary = [[ALAssetsLibrary alloc] init];
    [assetslibrary assetForURL:asseturl resultBlock:^(ALAsset *myasset) {
        ALAssetRepresentation *rep = [myasset defaultRepresentation];
        CGImageRef iref = [rep fullResolutionImage];
    
        Byte *buffer = (Byte*)malloc(rep.size);
        NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
        NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
    } failureBlock:^(NSError *myerror) {
        // error
    }];
    
[/code]


CC BY-SA 3.0
2018-01-29T05:18:17.823
41278
2018-01-29T05:18:17.823
7403
41223
answer