2016-05-04 7 views
0

OS XのPhotos.appでは、私のライブラリ内の写真のタイトル、キーワード、および説明を指定しました。 iOSでは、通常のフェッチ方法を使用してPHAssetを取得しました。CGImageSourceCopyPropertiesAtIndexはキーワードやその他のPhotos.appフィールドを返しません

CGImageSourceCopyPropertiesAtIndexを使用して、写真のメタデータを取得しました。メタデータは正しいです(すべてのGPSデータとEXIFデータを持ちます)。ただし、これらのカスタムフィールドは含まれていません。

これらのフィールドでiOSのPhotos.appを検索すると、キーワードやその他のフィールドが確実にデバイスに表示され、写真が見つかります。

これらのフィールドにアクセスする別の方法がありますか、またはCGImageSourceCopyPropertiesAtIndexのバグがありますか?情報は、個々のメディアファイルに埋め込まれていない(OS X上の写真と同期されます)、デバイス上の写真アプリのデータベースであることを

if let metadata = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil) { 
    print(metadata) 
} 

答えて

3

。 Photosフレームワークのこれらのフィールドを照会するための公開APIはありません。file a bugについては良いことだと思います。

1

iOSの11更新

後、私も同じ問題を抱えているCGImageSourceCopyPropertiesAtIndexにバグがあります。私のアプリはiOS 10.3.3で動作し、iOS 11のアップデート後、CGImageSourceCopyPropertiesAtIndex関数を使ってPNGファイルのメタデータ情報(記述フィールド)を取得できません。メタデータの説明フィールド(PNGファイル)は空です。私は既にAppleにバグを報告しましたが、私は9月27日の27/2017以来答えていません。

次のコードは、

NSStringのpngFile(iOSの11、iOSの11.0.1、iOSの11.0.2、iOSの11.0.3、iOSの11.1、11.2 ... iOS版では動作していない)のiOS 10.3.3に取り組ん説明

CGImageSourceRef imgSrc = CGImageSourceCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:pngFile], NULL); 
NSDictionary *metaDataDict = CFBridgingRelease(CGImageSourceCopyPropertiesAtIndex(imgSrc, 0, nil)); 
if (imgSrc!=nil) { 
    NSDictionary *metaDataDict = (__bridge NSDictionary *)(CGImageSourceCopyPropertiesAtIndex(imgSrc, 0, nil)); 
    // Release imgSrc 
    CFRelease(imgSrc); 
} 

と= @ "Demo.PNG" // Demo.PNG =任意のPNGファイル(https://forums.developer.apple.com/thread/90958で詳細を参照してください)

+1

は、単にリンクを使用してのより多くの代わりに説明してください。リンクが動作しなくなった場合、答えは役に立たなくなります – Ibo

+0

親愛なるlboありがとう!以前の答えを編集しました。 –

関連する問題