Сохранить растровое изображение в файл и вернуть файл с растровым изображением
У меня проблема с сохранением растровых изображений в файлы. Мой метод такой:
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);
Пожалуйста, помогите мне...
3 ответа
Решение
Я пытаюсь внести некоторые исправления в ваш код, я предполагаю, что вы хотите использовать имя файла вместо растрового изображения в качестве параметра
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;
}
Вы не можете писать так
File file = new File(bmp + ".png");
и эта строка тоже неверна
file = new File(extStorageDirectory, bmp + ".png");
Вы должны дать строковое значение, а не растровое изображение.
File file = new File(filename + ".png");
Изменить файл файл = новый файл (bmp + ".png"); в файл файл = новый файл (extStorageDirectory,"bmp.png"); как ты сделал почти во второй раз.