2017-03-17 15 views
-3

UIImagePickerControllerを使用せずにUIImageメタデータを取得する方法。UIImagePickerControllerを使用せずにUIImageメタデータを取得する

私は基本的に変数UIImageを持っており、メタデータを取得したいと思います。

たとえば、日付にアクセスするには "myImage.date"のようなものが必要です。

EDIT 1:私はあなたがこの便利な出発点を見つけるかもしれないこれを試して、それがクラッシュ(EXIFのVARに見つかっゼロ)

func getData(image: UIImage) { 
    guard let data = UIImageJPEGRepresentation(image, 1), 
     let source = CGImageSourceCreateWithData(data as CFData, nil) else { return} 


    let imageProperties = CGImageSourceCopyPropertiesAtIndex(source, 0, nil) 
    let a = Unmanaged.passUnretained(kCGImagePropertyExifDateTimeOriginal).toOpaque() 
    let exif = CFDictionaryGetValue(imageProperties, a) 
    print(exif) 
} 
+3

あなたのコードですか?何を試しましたか?何がうまくいかないの?どのような研究をしましたか?なぜあなたのために働かなかったのですか?あなたはあなたが自分自身を助けるために時間をかけたことを実証するなら、より多くのより良い答えを得るでしょう。参照してください[質問] –

+0

私は電話から撮影した画像を含む私の変数UIImageを持って、そこから私はメタデータを取得する必要があります。 Dude私はネット上で検索しますが、誰もがuiimagepickercontrollerデリゲートを使用しています。私はgoogle.comに関する私の研究を証明するビデオを作ることは役に立たないと思う – user3722523

+0

これはあなたが必要とするものですか? http://stackoverflow.com/q/40175160/2227743 – Moritz

答えて

1

...

func getMetaData(forImage image: UIImage) { 
    guard let data = UIImageJPEGRepresentation(image, 1), 
     let source = CGImageSourceCreateWithData(data as CFData, nil) else { return} 

    if let type = CGImageSourceGetType(source) { 
     print("type: \(type)") 
    } 

    if let properties = CGImageSourceCopyProperties(source, nil) { 
     print("properties - \(properties)") 
    } 

    let count = CGImageSourceGetCount(source) 
    print("count: \(count)") 

    for index in 0..<count { 
     if let metaData = CGImageSourceCopyMetadataAtIndex(source, index, nil) { 
      print("all metaData[\(index)]: \(metaData)") 

      let typeId = CGImageMetadataGetTypeID() 
      print("metadata typeId[\(index)]: \(typeId)") 


      if let tags = CGImageMetadataCopyTags(metaData) as? [CGImageMetadataTag] { 

       print("number of tags - \(tags.count)") 

       for tag in tags { 

        let tagType = CGImageMetadataTagGetTypeID() 
        if let name = CGImageMetadataTagCopyName(tag) { 
         print("name: \(name)") 
        } 
        if let value = CGImageMetadataTagCopyValue(tag) { 
         print("value: \(value)") 
        } 
        if let prefix = CGImageMetadataTagCopyPrefix(tag) { 
         print("prefix: \(prefix)") 
        } 
        if let namespace = CGImageMetadataTagCopyNamespace(tag) { 
         print("namespace: \(namespace)") 
        } 
        if let qualifiers = CGImageMetadataTagCopyQualifiers(tag) { 
         print("qualifiers: \(qualifiers)") 
        } 
        print("-------") 
       } 
      } 
     } 

     if let properties = CGImageSourceCopyPropertiesAtIndex(source, index, nil) { 
      print("properties[\(index)]: \(properties)") 
     } 
    } 
} 
+0

Thx私は多くのプロパティを持っていますが、私は日付を持っていない、私は知らない私はUIImageの日付を取得することができます場合。 UIImageではなくPHAssetが必要なのでしょうか? – user3722523

関連する問題