Wis*_*ors 18 objective-c uiimage ios alassetslibrary ios7
我有新的iOS 7照片滤镜功能的问题.
我的应用程序中有一个photolibrary.当我在UICollectionView中显示照片的缩略图时,我会收到已应用过滤器和裁剪的图像.有两种方法可以返回"随时可用"的图像:
[asset thumbnail][[asset defaultRepresentation] fullScreenImage]相反,当我想分享全尺寸图像时,我会收到没有任何过滤器的未更改照片:
[[asset defaultRepresentation] fullResolutionImage]是否可以使用适当的过滤器获取完整尺寸的图像?
Wis*_*ors 27
到目前为止,我只找到了一种方法来获得我想要的东西.所有资产都通过密钥在元数据字典中存储其修改(如过滤器,作物等)信息@"AdjustmentXMP".我们能够解释这些数据并fullResolutionImage在此SO答案中应用所有过滤器.这是我的完整解决方案:
...
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]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6473 次 |
| 最近记录: |