代码之家  ›  专栏  ›  技术社区  ›  mlidal

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

  •  7
  • mlidal  · 技术社区  · 7 年前

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

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

    1 回复  |  直到 7 年前
        1
  •  10
  •   mlidal    7 年前

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

    要将图像获取为JPEG照片,使用EXIF信息,请创建一个 CIImage 来自HEIF图像数据的对象和使用 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
    }