以正确的方向保存图像 – Swift&Core Image

我在Swift中使用Core Image来编辑照片,并且在保存照片时遇到问题。 我没有保存正确的方向 。 当我从照片库中获取图片时,我将这个方向保存为UIImageOrientation的variables,但是我不知道如何在将编辑后的照片保存到照片库之前将其设置回来。 任何想法如何?

保存方向:

var orientation: UIImageOrientation = .Up orientation = gotImage.imageOrientation 

将编辑的照片保存到照片库:

 @IBAction func savePhoto(sender: UIBarButtonItem) { let originalImageSize = CIImage(image:gotImage) filter.setValue(originalImageSize, forKey: kCIInputImageKey) // 1 let imageToSave = filter.outputImage // 2 let softwareContext = CIContext(options:[kCIContextUseSoftwareRenderer: true]) // 3 let cgimg = softwareContext.createCGImage(imageToSave, fromRect:imageToSave.extent()) // 4 let library = ALAssetsLibrary() library.writeImageToSavedPhotosAlbum(cgimg, metadata:imageToSave.properties(), completionBlock:nil) } 

不使用writeImageToSavedPhotosAlbummetadata版本,您可以使用:

 library.writeImageToSavedPhotosAlbum( cgimg, orientation: orientation, completionBlock:nil) 

那么你可以直接传递方向。

为了满足Swift,您可能需要首先对其进行注释:

 var orientation : ALAssetOrientation = ALAssetOrientation(rawValue: gotImage.imageOrientation.rawValue)! 

根据我在这里有些不确定的答案。

(正如你已经证实,这个解决scheme确实在Swift中工作 – 我从工作的Objective-C代码中得到它,未经testing)

如果您有兴趣处理来自图像元数据的其他信息,请参阅我提供给其他问题的一些相关答案。

更新UIImage方向metaData?
强制UIImagePickerController以纵向/维度iOS拍照
如何获得cocoa的形象作者
从iOS中获取“挑选”图像的URL

还有一个关于github的小型testing项目,它从各种来源挖掘出图像元数据(这是Objective-C,但是原理是一样的)。

你正在调用writeImageToSavedPhotosAlbum:metadata:completionBlock: …该方法的文档说:

您必须在元数据字典中指定方向键以保留图像的方向。