首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIImage元数据

UIImage元数据
EN

Stack Overflow用户
提问于 2012-05-14 19:54:57
回答 1查看 9K关注 0票数 7

在我的应用程序中,我正在从资源库检索UIImage,该图像具有元数据。然后,应用程序会调整图像大小并旋转图像,这反过来又会创建一个新图像。新图像没有预期的原始元数据,但如何在上传之前将元数据添加回图像?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-15 18:29:32

我自己修复了它,这是我使用的一个方法,以防其他人想知道怎么做!:)

代码语言:javascript
复制
-(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;
}
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10582829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档