是否有可能在捕获的图像中添加自己的元数据在Swift中

我对Swift和Ios编程非常陌生。 如上所述,我喜欢将我自己的元数据插入捕获的图像,然后将其保存到相册中。

我试图用这个代码完成这个。 保存的图像不包含我自己的元数据,但包含其生成的元数据。 任何人都可以告诉我我做错了什么?

或者,也许是不可能添加自己的新的元数据表捕获的图像?

非常感谢你的帮助

@IBAction func btnPressed(sender: UIButton) { capturePicture() } func capturePicture(){ stillImageOutput.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG] session.addOutput(stillImageOutput) if let connection = self.stillImageOutput.connectionWithMediaType(AVMediaTypeVideo) { self.stillImageOutput.captureStillImageAsynchronouslyFromConnection(connection) { (imageDataSampleBuffer, error) -> Void in if error == nil { var asset = ALAssetsLibrary() let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageDataSampleBuffer) // The Metadata of the Image var metadata:NSDictionary = CMCopyDictionaryOfAttachments(nil, imageDataSampleBuffer, CMAttachmentMode(kCMAttachmentMode_ShouldPropagate)).takeUnretainedValue() // My Metadata i want to add for testing purpose var meta : NSDictionary = ["Ersteller": "Dennis","Datum" : "25.04.14","Ort" : "Köln" ] asset.writeImageDataToSavedPhotosAlbum(imageData, metadata: meta as [NSObject : AnyObject], completionBlock: { (path:NSURL!, error:NSError!) -> Void in println("\(path)") println("\(error)") }) } } } } 

只需将下面的代码转换为Swift。 下面的代码是用Objective-C编写的。 你只需要创buildIPTC或TIFF字典。 用适当的IPTC / TIFF键添加数值,并在图像上写入字典数据(元数据)。

  - (void) imagePickerController: (UIImagePickerController *)picker didFinishPickingMediaWithInfo: (NSDictionary *)info { UIImage *image = info[UIImagePickerControllerOriginalImage]; //Here We Get current system date and time and store as a description of photo NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"dd-MM-yyyy"]; NSLog(@"Date Formatter : %@",[dateFormatter stringFromDate:[NSDate date]]); //hh:mm:ss NSDateFormatter *timeFormatter=[[NSDateFormatter alloc] init]; [timeFormatter setDateFormat:@"hh:mm:ss"]; NSLog(@"time Formatterr : %@",[timeFormatter stringFromDate:[NSDate date]]); //ADD IPTC Dictionary Data as a META DATA NSMutableDictionary *iptcDict = [NSMutableDictionary dictionary]; [iptcDict setValue:[[DataEngine sharedInstance] getAlbumName] forKey:(NSString *)kCGImagePropertyIPTCObjectTypeReference]; //folder name [iptcDict setValue:@“Renish Dadhaniya - 101" forKey:(NSString *)kCGImagePropertyIPTCObjectAttributeReference]; //add Image ID -get using query from database [iptcDict setValue:[NSString stringWithFormat:@“Renish Sweet Memory "forKey:(NSString *)kCGImagePropertyIPTCObjectName]; //Add Image name [iptcDict setValue:[dateFormatter stringFromDate:[NSDate date]]forKey:(NSString *)kCGImagePropertyIPTCDateCreated]; //Add Image Date [iptcDict setValue:[timeFormatter stringFromDate:[NSDate date]]forKey:(NSString *)kCGImagePropertyIPTCTimeCreated]; //Add Image Time NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setValue:iptcDict forKey:(NSString *)kCGImagePropertyIPTCDictionary]; //Get Iamge Url __block NSURL *imageAssestURL = nil; [asSetLib writeImageToSavedPhotosAlbum:image.CGImage metadata:dict completionBlock:^(NSURL* assetURL, NSError* error) { if (error) { NSLog(@"Image could not be safed to the assets library: %@", error); imageAssestURL = nil; } else { NSLog( @"Image safed successfully to assetURL: %@", assetURL); imageAssestURL = assetURL; } }]; [picker dismissViewControllerAnimated:YES completion:nil]; }