2011-08-01 3 views
0

私はユーザーにオブジェクトを作成させるiPadアプリを開発しています。また、私は彼/彼女がこのオブジェクトに10枚の写真を追加することを許可します。彼らは、自分のカメラロールからこれらの写真を選択するか、新しい写真を撮ることができます(iPadにカメラがある場合)。iPadアプリからカメラやアルバムからの画像を保存して使用する

私の質問は今これらの写真を保存するための最良の方法は何ですか?私の意見では、最も良い方法はUIImageWriteToSavedPhotosAlbum(image, self, @selector(image:finishedSavingWithError:contextInfo:), nil);メソッドを利用することです。この方法で、私はいつもiPadのフォトアルバムに画像を保存(または使用)できます。しかし、この場合は、後でイメージを再度取得できるように、データベースに何かを保存する必要があります。だから... finishedSavingWithError:contextInfo:メソッド内のファイルのパスのURLをデータベースに保存するにはどうすればよいですか?

としてプライベートフォルダに保存することです私の目標を達成するための別の方法:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.png", index]]; 
[fileManager createFileAtPath:fullPath contents:imageData attributes:nil]; 

または私は画像のように保存する必要があります。

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
     NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType]; 
     if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) { 
       UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
       imageView.image = image; 

       [ImageManager saveImage:image atIndex:0]; 
     } 
} 

そして、私のsaveImage方法は、以下を行いsqliteデータベース内のBLOB?

個人的には、基本的にすべてを2回保管しているため、最後の2つの可能性が吹き飛ぶと思います。あなたのギャラリーから画像を選択すると、その画像はローカル(ギャラリー)PLUSデータベースまたはアプリケーションのサブディレクトリに保存されます。それは空間の無駄です。

パフォーマンスを向上させるには、どのような方法が最適ですか?

また、ディレクトリに保存すると、このディレクトリにアクセスして削除できますか?

あなたの知恵を共有してくれてありがとう!

答えて

0

は、私はあなたがこれが可能だったとしても

UIImageWriteToSavedPhotosAlbumが、私はあなたがまだあなたのアプリで画像を保存することを示唆している使用して保存した画像のURL /パスを得ることができるとは思いません。それらをPhotosアプリケーションにエクスポートすることで、アプリケーションとその作成されたオブジェクトから画像を効果的に分離します。

たとえば、誰かが写真アプリから画像を削除しても、その画像があなたのアプリに関連付けられていることを認識したり覚えていないとどうなりますか?あなたはこれを防ぐ方法がありません。

保存方法(BLOBまたはファイル)に関してはどちらでもかまいません。フルサイズのオリジナル画像が必要な場合を除き、保存する前に画像のサイズを変更することをお勧めします。これを行うための多くのリソースがあります(例:UIImage: Resize, then Crop

+0

私は画像を削除することを禁止する必要はありません。彼らがそうした場合、それは間違いであり、イメージが存在するかどうかだけを確認することができます。もしそうでなければ、私はそれをロードしようとしません。しかし、少なくともそれはユーザーが望むように画像を整理することができ、実際に必要とされるメモリ容量を2倍にすることはありません。 – Jules

+0

それは非常に優雅に処理することができてうれしいです、私はちょうどユーザーの経験を考えていた。 (そして、アプリケーションの目的のためにイメージのサイズを変更できると仮定すると、メモリは2倍未満になります)。 –

+0

私を有用なサイズ変更スレッドにリンクしてくれてありがとう。私はこの解決のために行くつもりです。イメージを1024x768にサイズ変更し、BLOBとしてデータベースに格納します。 – Jules

関連する問題