2017-03-17 1 views
-3

Comment obtenir les métadonnées UIImage SANS utiliser UIImagePickerController.Obtenir les métadonnées UIImage sans utiliser UIImagePickerController

J'ai fondamentalement une variable UIImage et je veux obtenir les métadonnées.

J'aurais besoin de quelque chose comme "myImage.date" pour accéder à la date par exemple.

EDIT 1: J'essaie cela, mais il bloque (trouvé nul sur 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

Où est votre code? Qu'avez-vous essayé? Qu'est-ce qui ne fonctionne pas? Quelles recherches avez-vous faites? Pourquoi n'a pas travaillé pour toi? Vous obtiendrez des réponses plus nombreuses et meilleures Si vous démontrez que vous avez pris le temps d'essayer de vous aider. Voir [Demander] –

+0

J'ai ma variable UIImage qui contient une image prise depuis le téléphone et de là j'ai besoin d'obtenir les métadonnées. Mec je recherche sur le net mais tout le monde utilise le délégué uiimagepickercontroller. Je pense qu'il est inutile de faire une vidéo pour vous prouver mes recherches sur google.com – user3722523

+0

Est-ce que c'est ce dont vous avez besoin? http://stackoverflow.com/q/40175160/2227743 – Moritz

Répondre

1

Vous pourriez trouver ce point de départ utile ...

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 j'ai eu de nombreuses propriétés, mais je n'ai pas la date, je ne sais pas si je peux obtenir la date d'un UIImage. Peut-être que je dois avoir un PHAsset au lieu de UIImage? – user3722523