LoginSignup
10
8

More than 5 years have passed since last update.

CIImageを使ってExif情報を失わずにJPEGファイルを作成する

Last updated at Posted at 2019-04-08

実行環境

  • Swift 4.2
  • Xcode 10.1
  • Deployment Target 11.0

本題

PHCachingImageManagerAVCapturePhotoCaptureDelegateで受け取った画像データをExif情報を損なわずにJPEGファイルに保存する場合はCIImageを使用する必要があります。

func writeToJpeg(to url: URL, data: Data) throws {
    guard let image = CIImage(data: data),
        let jpegData = CIContext().jpegRepresentation(
            of: image,
            colorSpace: image.colorSpace ?? CGColorSpaceCreateDeviceRGB(),
            options: [:]) else {
                // JPEGデータ作成失敗
                return
    }
    try jpegData.write(to: url)
}

UIImageを使用するとExif情報が失われてしまいます。

func writeToJpeg(to url: URL, data: Data) throws {
    guard let image = UIImage(data: data),
        let jpegData = image.jpegData(compressionQuality: 1) else {
                // JPEGデータ作成失敗
                return
    }
    try jpegData.write(to: url)
}
10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8