Как сохранить путь к файлу JPEG из внутреннего хранилища в базу данных SQLite и к какому типу данных его сохранить?

#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 для пути, но каждый путь будет находиться в другой строке, принадлежащей соответствующему объекту в базе данных.