Подтвердить что ты не робот

Сохранить битмап в файл и вернуть файл с растровым изображением

У меня проблема с сохранением битмапов в файлах. Мой метод выглядит следующим образом:

private File savebitmap(Bitmap bmp) {
    String extStorageDirectory = Environment.getExternalStorageDirectory()
            .toString();
    OutputStream outStream = null;

    File file = new File(bmp + ".png");
    if (file.exists()) {
        file.delete();
        file = new File(extStorageDirectory, bmp + ".png");
        Log.e("file exist", "" + file + ",Bitmap= " + bmp);
    }
    try {
        outStream = new FileOutputStream(file);
        bmp.compress(Bitmap.CompressFormat.PNG, 100, outStream);
        outStream.flush();
        outStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    Log.e("file", "" + file);
    return file;

}

Это дает мне ошибку файла. Я вызываю этот метод следующим образом:

Drawable d = iv.getDrawable();
Bitmap bitmap = ((BitmapDrawable) d).getBitmap();
File file = savebitmap(bitmap);

Пожалуйста, помогите мне...

4b9b3361

Ответ 1

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

 private File savebitmap(String filename) {
      String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
      OutputStream outStream = null;

      File file = new File(filename + ".png");
      if (file.exists()) {
         file.delete();
         file = new File(extStorageDirectory, filename + ".png");
         Log.e("file exist", "" + file + ",Bitmap= " + filename);
      }
      try {
         // make a new bitmap from your file
         Bitmap bitmap = BitmapFactory.decodeFile(file.getName());

         outStream = new FileOutputStream(file);
         bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
         outStream.flush();
         outStream.close();
      } catch (Exception e) {
         e.printStackTrace();
      }
      Log.e("file", "" + file);
      return file;

   }

Ответ 2

Вы не можете писать так

 File file = new File(bmp + ".png");

и эта строка также неверна

file = new File(extStorageDirectory, bmp + ".png");

Вы должны указать значение string, а не растровое изображение.

 File file = new File(filename + ".png"); 

Ответ 3

Изменить   Файл file = новый файл (bmp + ".png" ); в   Файл file = новый файл (extStorageDirectory, "bmp.png" ); как вы делали почти второй раз.