highlights

2017年1月23日月曜日

[Swift3] カメラで写真を撮るときアルバムに保存しつつUIImageとパスを取得する方法

やりたいこと

ImagePickerControllerでカメラで撮った写真をアルバムに保存しつつ、処理を継続したい。

メリット

カメラロールで選択する場合とカメラで写真を撮る場合の処理を共通化できる。
あと、基本的に写真で撮った情報はアルバムに保存したほうが、ユーザーフレンドリーだと思う。

諸問題

カメラで撮った画像は、何故か傾きの情報が失われている。表示されている画像をもう一度描画することで解決できる。
(参考サイト)http://blog.katty.in/105

コード
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: AnyObject]) {
        if info[UIImagePickerControllerOriginalImage] != nil {
            var image = info[UIImagePickerControllerOriginalImage] as! UIImage
            
            // カメラで撮影した場合、一旦画像をアルバムに保存してからパスを得る
            if let refURL = info[UIImagePickerControllerReferenceURL] as? NSURL {
                // アルバムから取得した場合はUIImageもパスも取得できている
            } else {
                // カメラから取得した場合
                let lib: ALAssetsLibrary = ALAssetsLibrary()
                
                // なぜか傾く不思議。一度書き直す ===========
                UIGraphicsBeginImageContext(image.size)
                image.draw(in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height))
                image = UIGraphicsGetImageFromCurrentImageContext()!
                UIGraphicsEndImageContext()
                // =================================

                lib.writeImage(toSavedPhotosAlbum: image.cgImage, orientation: .up, completionBlock: { (url, error) -> Void in
                    if error != nil {
                        // 権限がないなど、エラーが起こった
                        self.dismiss(animated: true, completion: nil)
                    } else if let url = url {
                        // パスが取得できた
                    } else {
                        // パスが取得できなかった
                    }
                })
            }
        }
    }

1 件のコメント:

  1. Heart of Vegas brings you Dragon Link from the unique LIGHTNING LINK™ slots games with Lightning-fast Jackpots, Free Games, and the Hold & Spin function to maintain you on the edge of your seat. For Liz Wooley, the games highlight an rising and little-known social problem referring to video game dependancy. Wooley founded Online Gamers Anonymous after her 21-year-old son dedicated suicide in 2001 following two years he spent taking part in} a sport called EverQuest, an Internet fantasy 점보카지노 sport.

    返信削除