#java #android #sqlite #jpeg #internal-storage
#java #Android #sqlite #jpeg #внутреннее хранилище
Вопрос:
Я пытаюсь отобразить изображения из моего внутреннего хранилища в моем представлении recycler, я преобразовал ресурсы изображения в растровые изображения, используя convertToBitmap ()
и сохранил их как файлы jpeg в общем хранилище, используя storeToFile ()
amp; saveBitmap ()
.
Тем не менее, я хотел бы сохранить пути к файлу jpeg в моей базе данных SQLite и извлечь их в адаптере просмотра recycler. Проблема в том, что я не знаю, как я буду хранить пути к файлу jpeg в базе данных SQLite и какой тип данных я бы использовал для столбцов.
Способ преобразования ресурса в растровое изображение:
public void convertToBitmap () {
faan = BitmapFactory.decodeResource(context.getResources(), R.drawable.faan);
}
Способ сохранения растрового изображения в общем хранилище в формате JPG:
public void saveBitmap (Bitmap bitmap, String name) {
File filePath = Environment.getExternalStorageDirectory();
File dir = new File (filePath.getAbsolutePath() "/Items/");
dir.mkdir();
File file = new File (dir, name ".jpg");
try {
outputStream = new FileOutputStream(file);
} catch (FileNotFoundException e){
e.printStackTrace();
}
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
}
public void storeToFile () {
saveBitmap(faan,"Faan");
}
Комментарии:
1. Зачем вам копировать все эти файлы из ресурсов в файловую систему?
2. Если вы хотите использовать изображения в режиме рециркуляции, вы можете напрямую загрузить их из ресурсов.
3.
The problem is I don't know how I would store jpeg file paths in SQLite database amp; what data type I would use for the columns.
. Чтобы ответить на ваш вопрос: путь к файлу — это просто значение строки.4. @blackapps чтобы потом я мог сохранять пути к файлам в sqlite, мне сказали, что это лучший метод для хранения изображений в sqlite. Я пытался сохранить растровые изображения в виде байтов в базе данных, но у меня возникли проблемы с курсором при извлечении этих байтов, поскольку размер был слишком большим.
5. @blackapps сначала я пытался это сделать, но возникли проблемы с сохранением ресурсов идентификаторов каждого изображения в базе данных sqlite.
Ответ №1:
Есть два варианта: Если у вас есть несколько изображений, принадлежащих одним и тем же объектам, вы могли бы сохранить пути в виде строки, разделенной запятыми («first_path, second_path, third_path, …»).
Когда вы извлекаете это значение, вы можете использовать myString.split(«,»), чтобы получить пути в массиве строк
Если каждое изображение принадлежит другому объекту, вам нужно создать столбец String для пути, но каждый путь будет находиться в другой строке, принадлежащей соответствующему объекту в базе данных.