Tag: cifilter

解释ALAssetRepresentation中的XMP-Metadata

当用户在iOS上的内置Photos.app中对照片进行一些更改(剪裁,消除红眼…)时,这些更改不会应用到由相应的fullResolutionImage返回的ALAssetRepresentation 。 但是,这些更改将应用​​于由ALAssetRepresentation返回的thumbnail和fullScreenImage 。 此外,关于应用的更改的信息可以通过键@"AdjustmentXMP" ALAssetRepresentation在ALAssetRepresentation元数据字典中find 我想将这些更改应用于fullResolutionImage以保持一致性。 我发现iOS6 + CIFilter的filterArrayFromSerializedXMP: inputImageExtent:error:可以将这个XMP-metadata转换为一个CIFilter数组: ALAssetRepresentation *rep; NSString *xmpString = rep.metadata[@"AdjustmentXMP"]; NSData *xmpData = [xmpString dataUsingEncoding:NSUTF8StringEncoding]; CIImage *image = [CIImage imageWithCGImage:rep.fullResolutionImage]; NSError *error = nil; NSArray *filterArray = [CIFilter filterArrayFromSerializedXMP:xmpData inputImageExtent:image.extent error:&error]; if (error) { NSLog(@"Error during CIFilter creation: %@", [error localizedDescription]); } CIContext *context = [CIContext contextWithOptions:nil]; for […]