studio reales proyectos programacion introducción incluye guia fuente desarrollo código avanzado aplicaciones android save android-file

reales - manual programacion android



Guardar bitmap en Android como JPEG en almacenamiento externo en una carpeta (5)

Debes echar un vistazo a la documentación de Archivo, encontrarás el método mkdir (). Es casi lo mismo que el de Unix: https://developer.android.com/reference/java/io/File.html#mkdir()

Estoy utilizando este código para guardar Bitmap en almacenamiento externo pero no crea la carpeta si no existe:

String path = Environment.getExternalStorageDirectory().toString(); OutputStream fOutputStream = null; File file = new File(path + "/Captures/", "screen.jpg"); try { fOutputStream = new FileOutputStream(file); capturedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOutputStream); fOutputStream.flush(); fOutputStream.close(); MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()); } catch (FileNotFoundException e) { e.printStackTrace(); Toast.makeText(this, "Save Failed", Toast.LENGTH_SHORT).show(); return; } catch (IOException e) { e.printStackTrace(); Toast.makeText(this, "Save Failed", Toast.LENGTH_SHORT).show(); return; }

¿Cómo puedo guardar la imagen en el nuevo directorio si no existe y guardar el valor predeterminado si la carpeta está en el dispositivo?


Por favor, use el siguiente código de código podría ser de ayuda completa

String path = Environment.getExternalStorageDirectory().toString(); OutputStream fOutputStream = null; File file = new File(path + "/Captures/", "screen.jpg"); if (!file.exists()) { file.mkdirs(); } try { fOutputStream = new FileOutputStream(file); capturedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOutputStream); fOutputStream.flush(); fOutputStream.close(); MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()); } catch (FileNotFoundException e) { e.printStackTrace(); Toast.makeText(this, "Save Failed", Toast.LENGTH_SHORT).show(); return; } catch (IOException e) { e.printStackTrace(); Toast.makeText(this, "Save Failed", Toast.LENGTH_SHORT).show(); return; }


Usa lo siguiente:

File dir = new File(path + "/Captures/"); if(!dir.exists()) { dir.mkdirs(); } File file = new File(path + "/Captures/", "screen.jpg"); ......


prueba esto te dará un resultado seguro

String root = Environment.getExternalStorageDirectory().toString(); File myDir = new File(root + "/req_images"); myDir.mkdirs(); Random generator = new Random(); int n = 10000; n = generator.nextInt(n); String fname = "Image-" + n + ".jpg"; File file = new File(myDir, fname); Log.i(TAG, "" + file); if (file.exists()) file.delete(); try { FileOutputStream out = new FileOutputStream(file); bm.compress(Bitmap.CompressFormat.JPEG, 90, out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); }

añade este para mostrar en la galería:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

mira este enlace para una respuesta clara: muestra las imágenes de la carpeta en la galería


tarde, pero podría ser útil para alguien. use el código siguiente para guardar el mapa de bits en el directorio externo más rápido gracias a BufferOutPutStream.

public boolean storeImage(Bitmap imageData, String filename) { // get path to external storage (SD card) File sdIconStorageDir = null; sdIconStorageDir = new File(Environment.getExternalStorageDirectory() .getAbsolutePath() + "/myAppDir/"); // create storage directories, if they don''t exist if(!sdIconStorageDir.exist()) { sdIconStorageDir.mkdirs(); } try { String filePath = sdIconStorageDir.toString() + File.separator + filename; FileOutputStream fileOutputStream = new FileOutputStream(filePath); BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream); //Toast.makeText(m_cont, "Image Saved at----" + filePath, Toast.LENGTH_LONG).show(); // choose another format if PNG doesn''t suit you imageData.compress(Bitmap.CompressFormat.PNG, 100, bos); bos.flush(); bos.close(); } catch (FileNotFoundException e) { Log.w("TAG", "Error saving image file: " + e.getMessage()); return false; } catch (IOException e) { Log.w("TAG", "Error saving image file: " + e.getMessage()); return false; } return true; }