7

我正在维护一个用于将照片从 iPhone 上传到后端服务的应用程序。目前该服务不支持新的 HEIF 格式,那么有没有办法让 Photos 框架将照片数据转换为 jpeg?

我使用PHImageManager.requestImageData(for:options:resultHandler:)从图像中检索 Data 对象,然后将其上传到 REST API。

4

1 回答 1

9

(新的解决方案,上一个没有保留EXIF信息)

要将图像作为 JPEG 照片获取,带有 EXIF 信息,从 HEIF 图像数据创建CIImage对象并使用CIContext.jpegRepresentation(of:将 jpeg 编码的图像作为 Data 对象获取

let imageManager = PHImageManager.default()
var photo : PHAsset
var options : PHImageRequestOptions

imageManager.requestImageData(for: photo, options: options, resultHandler: {
                imageData,dataUTI,orientation,info in
let ciImage = CIImage(data: imageData!)
if #available(iOS 10.0, *) {
    data = CIContext().jpegRepresentation(of: ciImage!, colorSpace: CGColorSpaceCreateDeviceRGB())!
    // upload image data
}
于 2017-10-28T15:46:22.847 回答