2017-03-10 3 views
0

このquestionのように、PHAssetからメタデータを抽出しようとします。PHAssetからメタデータを抽出すると、予期しないゼロ値が返される

FocalLengthやApertureなどのメタデータを抽出しようとします。ここで

は私の現在のコードです:

let options = PHContentEditingInputRequestOptions() 
options.isNetworkAccessAllowed = true 

phAsset.requestContentEditingInput(with: options, completionHandler: {(contentEditingInput, _) -> Void in 

    let fullImage = CIImage(contentsOf: contentEditingInput!.fullSizeImageURL!) 
    let fullImageMetadata = fullImage?.properties 

    if let focalLength = fullImageMetadata?[kCGImagePropertyExifFocalLength as String] { 

     print(focalLength) 

    } 
}) 

私はコマンドpo fullImageMetadataを使用する場合、私は私の例イメージのために次のような出力を得る:私は到達しようquestionで述べたように

▿ Optional<Dictionary<String, Any>> 
▿ some : 12 elements 
▿ 0 : 2 elements 
    - .0 : "PixelHeight" 
    - .1 : 2304 
▿ 1 : 2 elements 
    - .0 : "{JFIF}" 
    ▿ .1 : 4 elements 
    ▿ 0 : 2 elements 
     - .0 : DensityUnit 
     - .1 : 0 
    ▿ 1 : 2 elements 
     - .0 : YDensity 
     - .1 : 72 
    ▿ 2 : 2 elements 
     - .0 : JFIFVersion 
     ▿ .1 : 3 elements 
     - 0 : 1 
     - 1 : 0 
     - 2 : 1 
    ▿ 3 : 2 elements 
     - .0 : XDensity 
     - .1 : 72 
▿ 2 : 2 elements 
    - .0 : "{Exif}" 
    ▿ .1 : 14 elements 
    ▿ 0 : 2 elements 
     - .0 : DateTimeDigitized 
     - .1 : 2010:01:28 10:54:24 
    ▿ 1 : 2 elements 
     - .0 : ExposureProgram 
     - .1 : 1 
    ▿ 2 : 2 elements 
     - .0 : PixelXDimension 
     - .1 : 1536 
    ▿ 3 : 2 elements 
     - .0 : ExposureBiasValue 
     - .1 : 0 
    ▿ 4 : 2 elements 
     - .0 : Flash 
     - .1 : 16 
    ▿ 5 : 2 elements 
     - .0 : DateTimeOriginal 
     - .1 : 2010:01:28 10:54:24 
    ▿ 6 : 2 elements 
     - .0 : MeteringMode 
     - .1 : 3 
    ▿ 7 : 2 elements 
     - .0 : PixelYDimension 
     - .1 : 2304 
    ▿ 8 : 2 elements 
     - .0 : ISOSpeedRatings 
     ▿ .1 : 1 element 
     - 0 : 100 
    ▿ 9 : 2 elements 
     - .0 : ExposureTime 
     - .1 : 0.00625 
    ▿ 10 : 2 elements 
     - .0 : ApertureValue 
     - .1 : 5.375 
    ▿ 11 : 2 elements 
     - .0 : ColorSpace 
     - .1 : 1 
    ▿ 12 : 2 elements 
     - .0 : ExifVersion 
     ▿ .1 : 2 elements 
     - 0 : 2 
     - 1 : 2 
    ▿ 13 : 2 elements 
     - .0 : FocalLength 
     - .1 : 30 
▿ 3 : 2 elements 
    - .0 : "DPIWidth" 
    - .1 : 72 
▿ 4 : 2 elements 
    - .0 : "Depth" 
    - .1 : 8 
▿ 5 : 2 elements 
    - .0 : "ProfileName" 
    - .1 : sRGB IEC61966-2.1 
▿ 6 : 2 elements 
    - .0 : "Orientation" 
    - .1 : 1 
▿ 7 : 2 elements 
    - .0 : "{TIFF}" 
    ▿ .1 : 8 elements 
    ▿ 0 : 2 elements 
     - .0 : ResolutionUnit 
     - .1 : 2 
    ▿ 1 : 2 elements 
     - .0 : Software 
     - .1 : Adobe Photoshop CS3 Macintosh 
    ▿ 2 : 2 elements 
     - .0 : DateTime 
     - .1 : 2010:04:12 16:29:18 
    ▿ 3 : 2 elements 
     - .0 : XResolution 
     - .1 : 72 
    ▿ 4 : 2 elements 
     - .0 : Orientation 
     - .1 : 1 
    ▿ 5 : 2 elements 
     - .0 : YResolution 
     - .1 : 72 
    ▿ 6 : 2 elements 
     - .0 : Model 
     - .1 : Canon EOS 5D Mark II 
    ▿ 7 : 2 elements 
     - .0 : Make 
     - .1 : Canon 
▿ 8 : 2 elements 
    - .0 : "{IPTC}" 
    ▿ .1 : 4 elements 
    ▿ 0 : 2 elements 
     - .0 : DigitalCreationTime 
     - .1 : 105424+0100 
    ▿ 1 : 2 elements 
     - .0 : DigitalCreationDate 
     - .1 : 20100128 
    ▿ 2 : 2 elements 
     - .0 : DateCreated 
     - .1 : 20100128 
    ▿ 3 : 2 elements 
     - .0 : TimeCreated 
     - .1 : 105424+0100 
▿ 9 : 2 elements 
    - .0 : "ColorModel" 
    - .1 : RGB 
▿ 10 : 2 elements 
    - .0 : "DPIHeight" 
    - .1 : 72 
▿ 11 : 2 elements 
    - .0 : "PixelWidth" 
    - .1 : 1536 

kCGImageProperty値のメタデータしかし、po fullImageMetadata?[kCGImageProperty[...] as String]でデバッガでデータを印刷すると、if -statementには何も入力されません。

しかし、何とかこれは動作する必要がありますか?誰か私のミスを見たり、そこに何が間違っているのを知ることができますか?

答えて

0

kCGImageProperty変数を持つiOSの例を使用しても問題を解決できませんでした。代わりに、私はそれを別のパーツに分割することで解決しました。例えば、Exifのメタデータを取得する

Iのコード行を使用し:

let exifDict = fullImageMetadata?["{Exif}"] as! NSDictionary 

をし、このコードを持つプロパティを抽出することを試みた:

if let flash = exifDict["Flash"] as? NSNumber { 
    [doing some wild stuff here] 
} 

など異なる特性のためにIイメージから抽出する必要があります。

関連する問題