この回答は多少遅れていますが、遅い回答は無回答より良いです。その答えは、(少なくともパブリックAPIの制約内で)重複したイメージがあるかどうかをフォトライブラリ(PL)で確認する方法がないことです。フォトライブラリに書き込むための唯一の方法はUIKitのグローバル関数を経由する:
void UIImageWriteToSavedPhotosAlbum (
UIImage *image,
id completionTarget,
SEL completionSelector,
void *contextInfo
);
このコードは、単にフォトライブラリにUIImageのインスタンスを書き込みます。その4つのパラメータのいずれも、画像と共に保存される可能性のある追加の潜在的に識別可能なオブジェクトを表していません。また、UIImageやそれがラップするCGImageは、この種の「メタデータ」のためのスロットを提供しません。もちろん、常にサブクラス化することはできますが、残念ながらPLの内容を検査する方法はありません。 PLは書き込み専用永続ストアであり、少なくともAPIプログラマに関する限り、その内容は本質的に匿名です。ブラックホールのように、写真ライブラリには「一方向の表面」があります。
出典
2009-09-17 06:19:35
Ben
実際、それは私に起こった最初の解決策でした。このアプローチの問題点は、ユーザーがイメージを削除した場合、以前に保存されたイメージのリストを参照するだけで、ファイルが存在しなくなったことが反映されず、アプリケーションがファイルの復元を拒否することです。 – Ben
基本的な問題は:ファイル名を知っている場合、フォトライブラリに同じ名前のファイルが存在するかどうかをどのようにして知ることができますか? – Ben
この場合、ユーザーはライブラリから写真を選択して保存し、それをjpegまたはpng(データを取得する)に変換して保存します。その後、ユーザーが再度選択して同じ方法でデータを取得すると、画像データのバイトがすでに格納されている画像データのバイトと一致するかどうかを調べることができるはずです( – Daniel