Сохранение массива изображений во внутреннем хранилище и извлечение - PullRequest
0 голосов
/ 01 января 2019

Я много искал массивы изображений для локального сохранения во внутреннем телефоне, но не смог найти ни одного сообщения.Я могу сохранить одно изображение во внутреннем хранилище и получить его в режиме повторного просмотра массива изображений, но не могу сохранить массив изображений.Кроме того, я использую базу данных для хранения текста редактирования.Пожалуйста, кто-нибудь, объясните мне здесь, как я могу сохранить и извлечь массив изображений с моим текстом из базы данных, вот что я делаю сейчас

Из 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...