LoginSignup
3
6

More than 5 years have passed since last update.

PhotoLibraryから選択した写真のメタデータを取得する

Posted at

やりたいことは自分のアプリ内で、
UIImagePickerControllerを呼び出してPhotoLibraryから写真を選択、
選択した写真の(画像もだけど)ExifやTiffなどのメタデータも取ってくる、ということ。

iOS9からALAssetsLibraryが非推奨になったので、メタデータ取得にもPhotos frameworkを使った。

UIImagePickerControllerDelegate に適合したPhotoViewControllerを用意し、以下な感じで実装。

PhotoViewController.swift
class PhotoViewController: UIViewController {

    // PhotoLibraryを出すところ
    func showPicker() {
        let sourceType = UIImagePickerControllerSourceType.PhotoLibrary;
        if (UIImagePickerController.isSourceTypeAvailable(sourceType)) {
            let picker = UIImagePickerController()
            picker.sourceType = sourceType
            picker.delegate = self
            self.presentViewController(picker, animated:true, completion:nil)
        }
    }
}

extension PhotoViewController: UIImagePickerControllerDelegate {
    // 写真選択された際に呼ばれる
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    // 画像の取得云々は割愛

    // meta data取得
    if
        let assetURL:AnyObject = info[UIImagePickerControllerReferenceURL],
        let url = NSURL(string: assetURL.description)
    {
        let result = PHAsset.fetchAssetsWithALAssetURLs([url], options: nil)
        if let asset = result.firstObject as? PHAsset {
            let options = PHContentEditingInputRequestOptions()
            options.networkAccessAllowed = true
            asset.requestContentEditingInputWithOptions(options, completionHandler: {
                (input, info) in
                printd("\(input), \(info)")
                if
                    let input = input,
                    let url  = input.fullSizeImageURL
                {
                    let ciImg = CIImage(contentsOfURL: url)
                    // ciImg?.propertiesに、EXIF, TIFFなどのメタデータが入ってる
                    printd("\(ciImg?.properties)")
                }
            })
        }
    }
}

参考

http://stackoverflow.com/questions/24462112/ios-8-photos-framework-access-photo-metadata
https://github.com/zakkhoyt/PHAsset-Utility

3
6
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
3
6