画像ギャラリーから画像を取得し、そのパスをローカル データベースに保存する方法を知りたいです。このプロセスの後、ローカル データベースのイメージ パスからイメージを使用したいと考えています。助けてください!
ありがとう。
画像ギャラリーから画像を取得し、そのパスをローカル データベースに保存する方法を知りたいです。このプロセスの後、ローカル データベースのイメージ パスからイメージを使用したいと考えています。助けてください!
ありがとう。
sqlite と画像について
(画像ではなく) パスを sqlite に保存することは理にかなっています。または、Core Data の使用を検討することもできます。Core Data が画像やその他の大きなデータを外部ストレージに保存する機能を提供するようになったので (独自のディレクトリを見つけたり、パスを取得したり、パスを保存したりする必要性を本質的に抽象化します)、私はそれを好みます。
以下のコードは、sqlite の厄介な詳細に対処できるか、生の実装のラッパーとして何らかのライブラリを使用していることを前提としています。
イメージをローカルに保存する
アプリのファイル システムのどこに画像を保存するかを決めることができます。ドキュメント ディレクトリを使用するとします。
- (NSURL *)applicationDocumentsDirectory
{
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
また、説明のために、これらが png 形式であると仮定します。
- (NSString *)pathForImageNamed:(NSString *)imageName {
return [[self applicationDocumentsDirectory] stringByPathComponent:imageName];
}
- (void)saveImage:(UIImage *)image name:(NSString *)name {
NSString *path = [self pathForImageNamed:imageName];
[UIImagePNGRepresentation writeToFile:path];
// here, save path to sqlite
}
画像の取得
- (UIImage *)imageWithName:(NSString *)imageName {
NSString *imagePath = nil;
// retrieve path name from sqlite db based on image name
return [UIImage imageWithContentsOfFile:imagePath];
}