将 HEIF 照片转换为 JPEG 以上传到后端

Convert HEIF photo to JPEG for uploading to backend

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

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

(新方案,之前的方案没有保留EXIF信息)

要获取带有 EXIF 信息的 JPEG 照片图像,请创建一个 CIImage object from the HEIF image data and use CIContext.jpegRepresentation(of: 以获取 jpeg 编码图像作为数据对象

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
}