2015-12-05 2 views
0

Как создать кнопку для хранения и извлечения изображений в sqlite в приложении ios? На самом деле я создаю приложение, в котором я могу снимать фото с камеры, и мне нужно его сохранить и отобразить как изображение профиля.Извлечение и хранение изображений в SQLite в ios

+2

Вы можете попробовать следующее: http://stackoverflow.com/questions/30349350/storing-and-retrieving-image-from-sqlite-database-in-ios/33543791#33543791 –

+0

wait .... [take посмотрите на SDWebImage] (https://github.com/rs/SDWebImage), используя эту библиотеку, вы просто указываете URL-адрес фотографии и выполняете кеширование ... –

ответ

0

Лучше сохранить изображение в пути к файлу, который является вашим каталогом документов, и сохранить путь к файлу в sqlite для более быстрого доступа к изображению.

сделать путь к файлу, как показано ниже:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory 
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"image.png"]; //Add the file name 
[pngData writeToFile:filePath atomically:YES]; //Write the file 

Теперь путь_к_файл строки вставки в базу данных SQLite.

и теперь, когда вы доступ к изображению вы получите путь к файлу с SQLite и получить данные изображения из, что, как показано ниже:

NSData *pngData = [NSData dataWithContentsOfFile:filePath]; 
UIImage *image = [UIImage imageWithData:pngData]; 
+0

Почему это лучше? Это идеальный вариант использования для SQLite, играющий свои сильные стороны. –

+0

@StevenFisher Это не самый эффективный способ их хранения. Базы данных не предназначены для хранения информации в формате изображения. Итак, короткий немного упрощенный ответ - это кошмар с производительностью с слишком большими накладными расходами. – Jaimish

+0

Это едва ли не кошмар с исполнением, и он достаточно эффективен. Это один из заявленных случаев использования SQLite. Не поймите меня неправильно, для любой другой базы данных вы абсолютно правы. Но SQLite скорее заменяет fopen, чем традиционную базу данных. –

2

Сохранение данных изображения в базе данных не является надлежащим образом, если вы хотите хранить большие количество изображений. Он повесит пользовательский интерфейс.

Вы можете создать папку в Справочнике документов и поместить туда изображение. Таким образом, вы получите изображение оттуда только каждый раз.

В базе данных хранятся путь к файлу и получают изображение из этого пути.

Обязательно удалите изображения из каталога документов, как только он станет непригодным, т.е. пользователь изменит изображение профиля. В противном случае он будет постоянно увеличивать память вашего приложения.

+0

https://www.sqlite.org/whentouse.html См. «Файловые архивы» и «Замена для специальных файлов диска». –

Смежные вопросы