将MetaData添加到我的图像并将其保存在文档目录中

时间:2014-05-30 11:10:45

标签: ios objective-c metadata

我的要求是在元数据中设置图像的描述,并将图像保存在文档目录中。

如果我将图像保存到照片库,但我想将图像保存在文档目录中,我发现如何创建元数据和元数据。

请建议如何将元数据添加到我的图像并将图像保存在目录中。

我的代码:

 NSMutableDictionary *tiffMetadata = [[NSMutableDictionary alloc] init];
    [tiffMetadata setObject:@"This is my description" forKey:(NSString*)kCGImagePropertyTIFFImageDescription];
    NSMutableDictionary *metadata = [[NSMutableDictionary alloc] init];
    [metadata setObject:tiffMetadata forKey:(NSString*)kCGImagePropertyTIFFDictionary];
    ALAssetsLibrary *assetsLib = [[ALAssetsLibrary alloc] init];
    NSData *imgData=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"IMG_0015" ofType:@"jpg"]];
    [assetsLib writeImageDataToSavedPhotosAlbum:imgData metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error) {
        if (error) {
            NSLog(@"%@",error.localizedDescription);
        }
    }];

任何建议都将受到高度赞赏。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

许多应用程序将使用ALAssets,然后使用完成块中生成的URL执行其他操作。如果这不合适,您需要更加手动地写入数据。 libexif.sourceforge.net/docs.html可能对此有所帮助,以及以下两个SO问题:

How to write exif metadata to an image (not the camera roll, just a UIImage or JPEG)

从CGImageSourceRef到具有元数据的CGImageDestinationRef的步骤。

Problem setting exif data for an image

答案 1 :(得分:0)

尝试使用以下代码:

 NSMutableDictionary *tiffMetadata = [[NSMutableDictionary alloc] init];
 [tiffMetadata setObject:@"This is my description" forKey:(NSString*)kCGImagePropertyTIFFImageDescription];
 NSMutableDictionary *metadata = [[NSMutableDictionary alloc] init];
 [metadata setObject:tiffMetadata forKey:(NSString*)kCGImagePropertyTIFFDictionary];
 ALAssetsLibrary *assetsLib = [[ALAssetsLibrary alloc] init];
 NSData *imgData=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"IMG_0015" ofType:@"jpg"]];
 [assetsLib writeImageDataToSavedPhotosAlbum:imgData metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error) {
      if(error == nil)
      {
           NSFileManager *fileManager = [NSFileManager defaultManager];
           NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
           NSString *docDirPath = [array objectAtIndex:0];
           NSURL *destURL = [[NSURL alloc]initFileURLWithPath:docDirPath];

           [fileManager copyItemAtURL:assetURL toURL:destURL error:nil];

      }
      else {
           NSLog(@"%@",error.localizedDescription);
      }
 }];