Я много искал массивы изображений для локального сохранения во внутреннем телефоне, но не смог найти ни одного сообщения.Я могу сохранить одно изображение во внутреннем хранилище и получить его в режиме повторного просмотра массива изображений, но не могу сохранить массив изображений.Кроме того, я использую базу данных для хранения текста редактирования.Пожалуйста, кто-нибудь, объясните мне здесь, как я могу сохранить и извлечь массив изображений с моим текстом из базы данных, вот что я делаю сейчас
Из Mainacctivity я вызываю loadImageFromStorage в Util.class
сохранить изображения из галереи
if (requestCode == GALLERY) {
if (data != null) {
Uri contentURI = data.getData();
try {
bp = MediaStore.Images.Media.getBitmap(context.getContentResolver(), contentURI);
bp = decodeUri(contentURI, 600);
bp = ImageOrientation.modifyOrientation(context.getApplicationContext(), bp ,contentURI);
Util.saveToInternalStorage(context, bp);
arrImages.add(contentURI);
Здесь я загружаю свои данные из базы данных и изображения из внутреннего хранилища
Notas notas = base.getNota(id);
titulo.setText(notas.getNombre());
if (Util.loadImageFromStorage(context,bp) != null) {
Log.d("TAG_", "bp not null");
bp = Util.loadImageFromStorage(context, bp);
Uri uri = Util.getImageUri(context, bp);
arrImages.add(uri);
rv_images.setAdapter(adapter);
initRecyclerView();
}
SpannableString text = new SpannableString(Html.fromHtml(notas.getTexto()));
texto.setText(text);
Изображение, которое я сохраняю и извлекаю в утилите-просмотр.Эти две функции определены в Util.class
public static String saveToInternalStorage(Context context, Bitmap bitmapImage){
String folder_main = "MyImages";
File f = new File(context.getApplicationInfo().dataDir, folder_main);
if (!f.exists()) {
f.mkdirs();
}
// Create imageDir
File mypath = new File(f,"image.jpg");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return f.getAbsolutePath();
}
public static Bitmap loadImageFromStorage(Context context, Bitmap bitp) {
String folder_main = "MyImages";
File f = new File(context.getApplicationInfo().dataDir, folder_main);
try {
File z = new File(f.toString(), "image.jpg");
bitp = BitmapFactory.decodeStream(new FileInputStream(z));
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
return bitp;
}
и являются последними моими базами данных, где я сохраняю свой текст редактирования
public String insertarNota(Notas letras){
ContentValues values = new ContentValues();
values.put(COLUMN_NOTAS_NOMBRE, letras.getNombre());
values.put(COLUMN_NOTAS_TEXTO, letras.getTexto());
values.put(COLUMN_NOTAS_FECHA, letras.getFecha());
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_NOTAS, null, values);
db.close();
return "exito";
}
public void deleteNota(int id){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_NOTAS + " WHERE " + COLUMN_NOTAS_ID + " = '"+id+"' ");
}
public void limpiarTablaNotas(){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_NOTAS);
}
public List<Notas> getNotas() {
List<Notas> letras = new ArrayList<>();
String query = "SELECT * FROM " + TABLE_NOTAS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
Notas letra = null;
if (cursor.moveToFirst()) {
do {
letra = new Notas(cursor.getInt(0),
cursor.getString(1),
cursor.getString(2),
cursor.getString(3));
letras.add(letra);
} while (cursor.moveToNext());
}
cursor.close();
return letras;
}