我正在尝试使用ALAsset获取图像的裁剪版本.具体来说,我正在从用户的照片库中选择项目,然后上传它们.问题是在库缩略图视图中,iOS向我们显示了裁剪版本.当您选择该缩略图并使用ALAsset拉取该图像的资源时,我会获得完整的分辨率版本.我做了一些研究,找不到任何有助于获得裁剪发生位置的第二个坐标系的东西.
要测试它,您需要iOS5来编辑库中的图像.在图像库中选择图像,选择"编辑",然后裁剪图像.当您获得ALAsset时,您将获得完整的图像,如果您使用iPhoto进行同步,iPhoto也会获取完整的图像.此外,您可以重新编辑图像并撤消裁剪.
这就是我得到图像的方式:
UIImage *tmpImage = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
Run Code Online (Sandbox Code Playgroud)
这显然给了我全分辨率图像.有一个fullScreenImage标志,可以将全分辨率图像缩放到屏幕大小.那不是我想要的.
ALAssetRepresenation类有一个scale字段,但这是一个浮点值,这也是我不想要的.
如果有人能告诉我这个裁剪坐标系的位置,我会很感激.
Wil*_*iss 28
你的选择:
使用- (CGImageRef)fullScreenImage方法AlAssetRepresentation.
优点:
缺点:
使用AdjustmentXMP图像元数据中的键(@tom指的是什么)提取裁剪数据.施用作物.
效益:
缺点
请求Apple提供一种方法fullResolutionEditedImage,让您获得最佳质量的照片,并应用所有修改.
优点:
缺点:
此选项仅适用于使用图像选择器的情况,不能直接将其与资产库一起使用
在NSDictionary中返回 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
您可以从UIImagePickerControllerOriginalImage键中提取完整大小的调整后图像.将此图像保存在某处.然后,不是从资产库中检索图像,而是加载您制作的副本.
优点:
缺点:
ALAssetRepresentation)iOS 7更新:您可能希望考虑选项4或选项1,因为iOS 7现在支持许多操作,如过滤器,您的用户可能会注意到它们是否丢失.这两个选项支持过滤器(和其他编辑),选项4为您提供更高分辨率的结果.
tom*_*tom 19
使用iOS照片应用程序裁剪照片时,可以在ALAssetRepresentation的元数据字典中找到裁剪坐标.fullResolutionImage将为您提供未剪切的照片,您必须自己进行裁剪.
AdjustmentXMP元数据不仅包含裁剪坐标,还指示是否已应用自动增强或删除红眼.
由于iOS的6.0 CIFilter提供filterArrayFromSerializedXMP:inputImageExtent:错误:也许你可以在这里使用ALAssetRepresentation的AdjustmentXMP元数据和应用CIFilter到ALAssetRepresentation的fullResolutionImage重新修改后的图像.
请注意,iOS照片应用程序以不同方式处理JPG和RAW图像.对于JPG图像,带有XMP元数据的新ALAsset存储在相机胶卷中.对于RAW图像,ALAssetRepresentation被添加到原始ALAsset.我不确定这个额外的ALAssetRepresentation是否是修改后的图像,是否具有AdjustmentXMP元数据.除了JPG和RAW图像,您还应该测试RAW + JPG图像的行为.
| 归档时间: |
|
| 查看次数: |
3699 次 |
| 最近记录: |