2009-08-24 8 views
0

私は、画像のセットをユーザーの写真ライブラリにコピーして、ユーザーがそれらを背景として使用できるようにする簡単なアプリケーションを作成しています。問題は、ユーザーがアプリケーションを複数回実行すると、重複したイメージがフォトライブラリにコピーされることです。 Appleが写真ライブラリのコンテンツにアクセスする際の制限がある場合、重複ファイルをライブラリに書き込まないようにする最も単純な方法は何ですか?重複した画像をiPhone Photo Libraryにコピーしないようにするにはどうすればよいですか?

ベンは

答えて

0

あなたは持っていない、保存されているあなたが知っている道をファイルに書き込むか、コアデータを使用して、アプリケーション内に保存された画像データを保存することができます。 Y

+0

実際、それは私に起こった最初の解決策でした。このアプローチの問題点は、ユーザーがイメージを削除した場合、以前に保存されたイメージのリストを参照するだけで、ファイルが存在しなくなったことが反映されず、アプリケーションがファイルの復元を拒否することです。 – Ben

+0

基本的な問題は:ファイル名を知っている場合、フォトライブラリに同じ名前のファイルが存在するかどうかをどのようにして知ることができますか? – Ben

+0

この場合、ユーザーはライブラリから写真を選択して保存し、それをjpegまたはpng(データを取得する)に変換して保存します。その後、ユーザーが再度選択して同じ方法でデータを取得すると、画像データのバイトがすでに格納されている画像データのバイトと一致するかどうかを調べることができるはずです( – Daniel

0

この回答は多少遅れていますが、遅い回答は無回答より良いです。その答えは、(少なくともパブリックAPIの制約内で)重複したイメージがあるかどうかをフォトライブラリ(PL)で確認する方法がないことです。フォトライブラリに書き込むための唯一の方法はUIKitのグローバル関数を経由する:

void UIImageWriteToSavedPhotosAlbum (
    UIImage *image, 
    id  completionTarget, 
    SEL  completionSelector, 
    void  *contextInfo 
); 

このコードは、単にフォトライブラリにUIImageのインスタンスを書き込みます。その4つのパラメータのいずれも、画像と共に保存される可能性のある追加の潜在的に識別可能なオブジェクトを表していません。また、UIImageやそれがラップするCGImageは、この種の「メタデータ」のためのスロットを提供しません。もちろん、常にサブクラス化することはできますが、残念ながらPLの内容を検査する方法はありません。 PLは書き込み専用永続ストアであり、少なくともAPIプログラマに関する限り、その内容は本質的に匿名です。ブラックホールのように、写真ライブラリには「一方向の表面」があります。

関連する問題