iphoneemailmetadataphotolibrary

Email jpg created in app including metadata


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

writeImageToSavedPhotosAlbum: metadata: completionBlock: 

method. However I would also like the option of emailing this jpg with the metadata (such as location, exit, etc.). I use this to email:

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
NSData *myData =  UIImageJPEGRepresentation(emailImage, 0.8);
[picker addAttachmentData:myData mimeType:@"image/jpg" fileName:@"photo"];

However, this results in no metadata.
When the saved image is sent via Apple's photo app, metadata is included. Is there a way to embed the metadata into NSData attachment? Any ideas?


Solution

  • 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