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

mli*_*dal 5 ios photosframework heif

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

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

mli*_*dal 6

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

要使用EXIF信息将图像获取为JPEG照片,请从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
}
Run Code Online (Sandbox Code Playgroud)