Android Saving creó bitmap en el directorio de la tarjeta sd

Creé un bitmap y ahora quiero guardar ese bitmap en un directorio en algún lugar. ¿Alguien puede mostrarme cómo se hace esto? Gracias

FileInputStream in; BufferedInputStream buf; try { in = new FileInputStream("/mnt/sdcard/dcim/Camera/2010-11-16_18-57-18_989.jpg"); buf = new BufferedInputStream(in); Bitmap _bitmapPreScale = BitmapFactory.decodeStream(buf); int oldWidth = _bitmapPreScale.getWidth(); int oldHeight = _bitmapPreScale.getHeight(); int newWidth = 2592; int newHeight = 1936; float scaleWidth = ((float) newWidth) / oldWidth; float scaleHeight = ((float) newHeight) / oldHeight; Matrix matrix = new Matrix(); // resize the bit map matrix.postScale(scaleWidth, scaleHeight); Bitmap _bitmapScaled = Bitmap.createBitmap(_bitmapPreScale, 0, 0, oldWidth, oldHeight, matrix, true); 

(Quiero guardar _bitmapScaled en una carpeta en mi tarjeta SD)

Hola Puede escribir datos en bytes y luego crear un archivo en la carpeta sdcard con cualquier nombre y extensión que desee y luego escribir los bytes en ese archivo. Esto guardará bitmap en sdcard.

 ByteArrayOutputStream bytes = new ByteArrayOutputStream(); _bitmapScaled.compress(Bitmap.CompressFormat.JPEG, 40, bytes); //you can create a new file name "test.jpg" in sdcard folder. File f = new File(Environment.getExternalStorageDirectory() + File.separator + "test.jpg"); f.createNewFile(); //write the bytes in file FileOutputStream fo = new FileOutputStream(f); fo.write(bytes.toByteArray()); // remember close de FileOutput fo.close(); 

También puedes probar esto.

  OutputStream fOut = null; File file = new File(strDirectoy,imgname); fOut = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 85, fOut); fOut.flush(); fOut.close(); MediaStore.Images.Media.insertImage(getContentResolver(),file.getAbsolutePath(),file.getName(),file.getName()); 

_bitmapScaled.compress() debería hacer el truco. Consulte los documentos: http://sofes.miximages.com/android/Bitmap

Hacer esto:

 ByteArrayOutputStream bytes = new ByteArrayOutputStream(); _bitmapScaled.compress(Bitmap.CompressFormat.PNG, 40, bytes); //you can create a new file name "test.BMP" in sdcard folder. File f = new File(Environment.getExternalStorageDirectory() + File.separator + "test.bmp") 

parecerá que IM JUST FOOLING ALREDEDOR, pero pruébalo una vez que se haya guardado en bmp foramt … Cheers

Esta respuesta es una actualización con un poco más de consideración para OOM y varias otras filtraciones.

Supone que tiene un directorio destinado como destino y un nombre String ya definido.

  File destination = new File(directory.getPath() + File.separatorChar + filename); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); source.compress(Bitmap.CompressFormat.PNG, 100, bytes); FileOutputStream fo = null; try { destination.createNewFile(); fo = new FileOutputStream(destination); fo.write(bytes.toByteArray()); } catch (IOException e) { } finally { try { fo.close(); } catch (IOException e) {} } 

Pase el bitmap al método saveImage, guardará su bitmap en el nombre de un saveBitmap, dentro de la carpeta de prueba creada.

 private void saveImage(Bitmap data) { File createFolder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"test"); if(!createFolder.exists()) createFolder.mkdir(); File saveImage = new File(createFolder,"saveBitmap.jpg"); try { OutputStream outputStream = new FileOutputStream(saveImage); data.compress(Bitmap.CompressFormat.JPEG,100,outputStream); outputStream.flush(); outputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 

y usa esto:

  saveImage(bitmap);