【问题标题】:Convert HEIF photo to JPEG for uploading to backend将 HEIF 照片转换为 JPEG 以上传到后端
【发布时间】:2018-03-27 07:51:18
【问题描述】:

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

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

【问题讨论】:

    标签: ios photosframework heif


    【解决方案1】:

    (新解决方案,上一个没有保留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
    }
    

    【讨论】:

    • 很好的解决方案,谢谢!我正在做一个巨大的数据舞蹈 -> 提取 exif -> UIImage -> UIIMageJPGRepresentation -> 附加 exif -> 保存它。
    • 我们应该在哪里将我们的 UIImage 传递给这个方法?不清楚
    • 在这种情况下你根本不用 UIImage,你可以从一个 Data 对象创建一个 CIImage 并以 jpeg 格式将它导出到一个新的 Data 对象
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 2020-05-30
    • 2012-02-26
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    相关资源
    最近更新 更多