telefono tarjeta sdcard samsung raiz programacion prime pasar memoria los las interna guardar grand fotos externa directorio como archivos ala android image save

sdcard - Android Saving creó mapa de bits en el directorio de la tarjeta sd



file sdcard (6)

Creé un mapa de bits y ahora quiero guardar ese mapa de bits 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)


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) {} }


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();


Hola solo dale el nombre a .bmp

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


Pase el mapa de bits al método saveImage, guardará su mapa de bits 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);


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());