Как сохранить изображение, полученное из UIImagePickerController, в виде файла HEIF?

Как обработать изображение, полученное из UIImagePickerController, как файл HEIF? Прямо сейчас, используя камеру в качестве типа источника, UIImagePickerControllerOriginalImage предоставляет мне только UIImage. Я хочу отправить изображение в формате HEIF на сервер. Предполагается, что для imageExportPreset установлено значение current.

1 ответ

Единственное, что я бы скорректировал с помощью решения sverin, это не использовал ctx.workingColorSpace, так как вы могли бы изменить пространство, в котором находится изображение. Например, вы можете заметить это, если перезагрузите изображение в UIImageView, и оно выглядит размытым,

Также обновлено для Swift 4.

do {

    let ctx = CIContext()
    let ciImage = CIImage(image: uiImage)
    try ctx.writeHEIFRepresentation(of: ciImage!, to: url, format: .RGBA8, colorSpace: ciImage.colorSpace!, options: [:])

} catch {
    print("ERROR", error.localizedDescription)
}

Старый вопрос, но в зависимости от того, как вы отправляете данные, у вас есть два варианта.

  1. Запишите UIImage в физический файл и отправьте его.

    do {
    
        let ctx = CIContext()
        let ciImage = CIImage(image: uiImage)
        try ctx.writeHEIFRepresentation(of: ciImage!, to: url, format: kCIFormatRGBA8, colorSpace: ctx.workingColorSpace!, options: [:])
    
    } catch {
        print("ERROR", error.localizedDescription)
    }
    
  2. Напишите UIImage для данных и отправьте

    let ctx = CIContext()
    let ciImage = CIImage(image: uiImage)
    let data = ctx.heifRepresentation(of: ciImage!, format: kCIFormatRGBA8, colorSpace: ctx.workingColorSpace!, options: [:])
    
Другие вопросы по тегам