Конвертировать растровое изображение в файл
Я понимаю, что с помощью BitmapFactory
можно преобразовать файл в растровое изображение, но есть ли способ преобразовать растровое изображение в файл?
4 ответа:
надеюсь, что это поможет U:
//create a file to write bitmap data File f = new File(context.getCacheDir(), filename); f.createNewFile(); //Convert bitmap to byte array Bitmap bitmap = your bitmap; ByteArrayOutputStream bos = new ByteArrayOutputStream(); bitmap.compress(CompressFormat.PNG, 0 /*ignored for PNG*/, bos); byte[] bitmapdata = bos.toByteArray(); //write the bytes in file FileOutputStream fos = new FileOutputStream(f); fos.write(bitmapdata); fos.flush(); fos.close();
File file = new File("path"); OutputStream os = new BufferedOutputStream(new FileOutputStream(file)); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os); os.close();
преобразование
Bitmap
доFile
должно быть сделано в фоновом режиме (не в главном потоке) он висит пользовательский интерфейс специально, еслиbitmap
большойFile file; public class fileFromBitmap extends AsyncTask<Void, Integer, String> { Context context; Bitmap bitmap; String path_external = Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg"; public fileFromBitmap(Bitmap bitmap, Context context) { this.bitmap = bitmap; this.context= context; } @Override protected void onPreExecute() { super.onPreExecute(); // before executing doInBackground // update your UI // exp; make progressbar visible } @Override protected String doInBackground(Void... params) { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); file = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg"); try { FileOutputStream fo = new FileOutputStream(file); fo.write(bytes.toByteArray()); fo.flush(); fo.close(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); // back to main thread after finishing doInBackground // update your UI or take action after // exp; make progressbar gone sendFile(file); } }
, назвав его
new fileFromBitmap(my_bitmap, getApplicationContext());
вы должны использовать
file
наonPostExecute
.изменить каталог
file
для хранения в кэше заменить строку :file = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg");
С :
file = new File(context.getCacheDir(), "temporary_file.jpg");