UIImage meta data

前端 未结 1 1796
滥情空心
滥情空心 2020-12-28 23:27

In my app I am retrieving a UIImage from the asset library, this image has meta data. The app is then resizing and rotating the image which in turn is creating a new image.

相关标签:
1条回答
  • 2020-12-28 23:34

    Fixed it myself, here is a method I used just incase anyone else is wondering how to do it! :)

    -(UIImage *)addMetaData:(UIImage *)image {
    
        NSData *jpeg = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0)];
    
        CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)jpeg, NULL);
    
        NSDictionary *metadata = [[asset_ defaultRepresentation] metadata];
    
        NSMutableDictionary *metadataAsMutable = [metadata mutableCopy];
    
        NSMutableDictionary *EXIFDictionary = [metadataAsMutable objectForKey:(NSString *)kCGImagePropertyExifDictionary];
        NSMutableDictionary *GPSDictionary = [metadataAsMutable objectForKey:(NSString *)kCGImagePropertyGPSDictionary];
        NSMutableDictionary *TIFFDictionary = [metadataAsMutable objectForKey:(NSString *)kCGImagePropertyTIFFDictionary];
        NSMutableDictionary *RAWDictionary = [metadataAsMutable objectForKey:(NSString *)kCGImagePropertyRawDictionary];
        NSMutableDictionary *JPEGDictionary = [metadataAsMutable objectForKey:(NSString *)kCGImagePropertyJFIFDictionary];
        NSMutableDictionary *GIFDictionary = [metadataAsMutable objectForKey:(NSString *)kCGImagePropertyGIFDictionary];
    
        if(!EXIFDictionary) {
            EXIFDictionary = [NSMutableDictionary dictionary];
        }
    
        if(!GPSDictionary) {
            GPSDictionary = [NSMutableDictionary dictionary];
        }
    
        if (!TIFFDictionary) {
            TIFFDictionary = [NSMutableDictionary dictionary];
        }
    
        if (!RAWDictionary) {
            RAWDictionary = [NSMutableDictionary dictionary];
        }
    
        if (!JPEGDictionary) {
            JPEGDictionary = [NSMutableDictionary dictionary];
        }
    
        if (!GIFDictionary) {
            GIFDictionary = [NSMutableDictionary dictionary];
        }
    
        [metadataAsMutable setObject:EXIFDictionary forKey:(NSString *)kCGImagePropertyExifDictionary];
        [metadataAsMutable setObject:GPSDictionary forKey:(NSString *)kCGImagePropertyGPSDictionary];
        [metadataAsMutable setObject:TIFFDictionary forKey:(NSString *)kCGImagePropertyTIFFDictionary];
        [metadataAsMutable setObject:RAWDictionary forKey:(NSString *)kCGImagePropertyRawDictionary];
        [metadataAsMutable setObject:JPEGDictionary forKey:(NSString *)kCGImagePropertyJFIFDictionary];
        [metadataAsMutable setObject:GIFDictionary forKey:(NSString *)kCGImagePropertyGIFDictionary];
    
        CFStringRef UTI = CGImageSourceGetType(source);
    
        NSMutableData *dest_data = [NSMutableData data];
    
        CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)dest_data,UTI,1,NULL);
    
        //CGImageDestinationRef hello;
    
        CGImageDestinationAddImageFromSource(destination,source,0, (__bridge CFDictionaryRef) metadataAsMutable);
    
        BOOL success = NO;
        success = CGImageDestinationFinalize(destination);
    
        if(!success) {
        }
    
        dataToUpload_ = dest_data;
    
        CFRelease(destination);
        CFRelease(source);
    
        return image;
    }
    
    0 讨论(0)
提交回复
热议问题