Email jpg created in app including metadata

前端 未结 2 1428
天涯浪人
天涯浪人 2021-01-01 07:52

I have successfully added metadata to a jpg created within the app and saved it to the Camera Roll using the

writeImageToSavedPhotosAlbum: metadata: complet         


        
相关标签:
2条回答
  • 2021-01-01 08:31

    UIImage doesn't hold any metadata. If you have the path for the image read data directly from it. If you get the image back from camera roll there's the imagePickerController:didFinishPickingMediaWithInfo: method from UIImagePickerDelegate which also contains the metadata inside the info dictionary.

    Also the mimeType should be "image/jpeg".

    Edit: To add metadata to a UIImage you can use the ImageIO framework: You can create a CGImageDestination object from a UIImage, add metadata to it using CGImageDestinationSetProperties and then get the raw data (which includes the compressed image and the metadata) from it

    0 讨论(0)
  • 2021-01-01 08:44

    Here is an example code to attach metadata to a NSMutableData object, which can be mailed.

    UIImage* yourImage = ... from somewhere ...
    NSDictionary* info = ... in my case from didFinishPickingMediaWithInfo:
    
    CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef) UIImageJPEGRepresentation(yourImage, 0.5 /* compression factor */), NULL);
    
    NSMutableData* imageData = [NSMutableData data];
    
    CGImageDestinationRef imageDest = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, kUTTypeJPEG, 1, NULL);
    CGImageDestinationAddImageFromSource(imageDest, source, 0, (__bridge CFDictionaryRef)info[@"UIImagePickerControllerMediaMetadata"]);
    CGImageDestinationFinalize(imageDest);
    
    CFRelease(imageDest);
    CFRelease(source);
    
    // at this point, imageData will contain your image + metadata
    
    0 讨论(0)
提交回复
热议问题