¿Cómo puedo escribir un recurso Drawable en un archivo?
Necesito exportar algunos recursos Drawable
a un archivo.
Por ejemplo, tengo una función que me devuelve un objeto Drawable
. Quiero escribirlo en un archivo en /sdcard/drawable/newfile.png
. ¿Cómo puedo hacerlo?
- Envíe el archivo .apk al cliente para su revisión
- Android cómo exportar jar con recursos?
- Archivo de exportación desde una aplicación de Android a la aplicación de calendario de Google
- Eclipse Export Signed Package agrega el directorio drawables dos veces, duplicando el tamaño de apk!
- Exportar firmado APK con error de ProGuard
- Proyecto Android: Problema de exportación Lanzamiento cancelado! Proguard devuelto con el código de error 1. Consulte consola
- La exportación de Android se anuló porque se encontraron errores fatales
- Error al exportar la aplicación android (Eclipse)
- Datos de exportación de Android a csv
- Exportar apk desde el teléfono?
- Export sqlite en csv
- Error al ejecutar zipalign
- Exportar mis datos en el archivo CSV desde la aplicación Android
Aunque la mejor respuesta aquí tiene un enfoque agradable. Sólo es enlace. A continuación, le indicamos cómo realizar los pasos siguientes:
Convertir dibujable en mapa de bits
Puedes hacerlo en al menos dos maneras diferentes, dependiendo de dónde vas a conseguir el Drawable
.
- Dibujable está en carpetas
res/drawable
.
Digamos que quieres usar un Drawable
que esté en tus carpetas Drawable
. Puede utilizar el enfoque BitmapFactory#decodeResource
. Ejemplo a continuación.
Bitmap bm = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.your_drawable);
- Tiene un objeto
PictureDrawable
.
Si obtiene un PictureDrawable
desde otro lugar "en tiempo de ejecución", puede utilizar el método Bitmap#createBitmap
para crear su Bitmap
. Como el siguiente ejemplo.
public Bitmap drawableToBitmap(PictureDrawable pd) { Bitmap bm = Bitmap.createBitmap(pd.getIntrinsicWidth(), pd.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bm); canvas.drawPicture(pd.getPicture()); return bm; }
Guardar el mapa de bits en el disco
Una vez que tenga su objeto Bitmap
, puede guardarlo en el almacenamiento permanente. Sólo tendrá que elegir el formato de archivo (JPEG, PNG o WEBP).
/** * @param dir you can get from many places like Environment.getExternalStorageDirectory() or mContext.getFilesDir() depending on where you want to save the image. * @param fileName The file name. * @param bm The Bitmap you want to save. * @param format Bitmap.CompressFormat can be PNG,JPEG or WEBP. * @param quality quality goes from 1 to 100. (Percentage). * @return true if the Bitmap was saved successfully, false otherwise. */ boolean saveBitmapToFile(File dir, String fileName, Bitmap bm, Bitmap.CompressFormat format, int quality) { File imageFile = new File(dir,fileName); FileOutputStream fos = null; try { fos = new FileOutputStream(imageFile); bm.compress(format,quality,fos); fos.close(); return true; } catch (IOException e) { Log.e("app",e.getMessage()); if (fos != null) { try { fos.close(); } catch (IOException e1) { e1.printStackTrace(); } } } return false; }
Y para obtener el directorio de destino, pruebe algo como:
File dir = new File(Environment.getExternalStorageDirectory() + File.separator + "drawable"); boolean doSave = true; if (!dir.exists()) { doSave = dir.mkdirs(); } if (doSave) { saveBitmapToFile(dir,"theNameYouWant.png",bm,Bitmap.CompressFormat.PNG,100); } else { Log.e("app","Couldn't create target directory."); }
Obs: recuerde hacer este tipo de trabajo en un tema de fondo si está tratando con imágenes grandes o con muchas imágenes, ya que puede llevar algún tiempo terminar y podría bloquear su interfaz de usuario, haciendo que su aplicación no responda.
- Convertir Drawable a Bitmap: ¿Cómo convertir un dibujable a un mapa de bits?
- Guardar mapa de bits en un archivo: Guardar mapa de bits en la ubicación
Obtener la imagen almacenada en sdcard ..
File imgFile = new File(“/sdcard/Images/test_image.jpg”); if(imgFile.exists()){ Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); ImageView myImage = (ImageView) findViewById(R.id.imageviewTest); myImage.setImageBitmap(myBitmap); }
Actualizar:
String path = Environment.getExternalStorageDirectory()+ "/Images/test.jpg"; File imgFile = new File(path);
- Selección de Intenciones de Android para mostrar sólo la opción de correo electrónico
- URL de SMS en Android