ALAsset默认值表示完全解析映像吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (52)

我有一个新的iOS 7照片过滤器功能的问题。 当我在UICollectionView中显示照片的缩略图时,我收到了已经应用了过滤器和作物的图像。有两种方法返回“准备使用”图像:

  • [asset thumbnail]
  • [[asset defaultRepresentation] fullScreenImage]

而当我想分享原图时,我会收到没有任何过滤器和未改变的照片:

  • [[asset defaultRepresentation] fullResolutionImage]
  • 通过getBytes读取图像数据:fromOffset:length:error:

是否有可能获得一个适当的过滤器和适当的全尺寸图像?

提问于
用户回答回答于

到目前为止,我只能找到一种方法来实现想要的效果。这是我完整的解决方案:

...
ALAssetRepresentation *assetRepresentation = [asset defaultRepresentation];
CGImageRef fullResImage = [assetRepresentation fullResolutionImage];
NSString *adjustment = [[assetRepresentation metadata] objectForKey:@"AdjustmentXMP"];
if (adjustment) {
    NSData *xmpData = [adjustment dataUsingEncoding:NSUTF8StringEncoding];
    CIImage *image = [CIImage imageWithCGImage:fullResImage];

    NSError *error = nil;
    NSArray *filterArray = [CIFilter filterArrayFromSerializedXMP:xmpData
                                                 inputImageExtent:image.extent
                                                            error:&error];
    CIContext *context = [CIContext contextWithOptions:nil];
    if (filterArray && !error) {
        for (CIFilter *filter in filterArray) {
            [filter setValue:image forKey:kCIInputImageKey];
            image = [filter outputImage];
        }
        fullResImage = [context createCGImage:image fromRect:[image extent]];
    }   
}
UIImage *result = [UIImage imageWithCGImage:fullResImage
                                      scale:[assetRepresentation scale]
                                orientation:(UIImageOrientation)[assetRepresentation orientation]];

扫码关注云+社区

领取腾讯云代金券