it-swarm.com.de

Android Speichern der erstellten Bitmap in einem Verzeichnis auf der SD-Karte

Ich habe eine Bitmap erstellt und möchte diese Bitmap irgendwo in einem Verzeichnis speichern. Kann mir jemand zeigen, wie das gemacht wird. Vielen Dank

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

(Ich möchte _bitmapScaled in einem Ordner auf meiner SD-Karte speichern.)

30
user516883

Hallo Sie können Daten in Bytes schreiben und dann eine Datei im sdcard-Ordner mit dem gewünschten Namen und der gewünschten Erweiterung erstellen und dann die Bytes in diese Datei schreiben. Dadurch wird das Bitmap auf der SD-Karte gespeichert.

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();
103
krunal shah

Sie können dies auch versuchen.

  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());
11
Andro Selva

Ändern Sie einfach die Erweiterung in .bmp .

Mach das:

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")

Es klingt so, als würde ich nur herumalbern, aber probieren Sie es einmal und es wird im BMP-Format gespeichert. Prost!

4
Mayank Saini

_bitmapScaled.compress() sollte den Trick tun. Überprüfen Sie die Dokumente: http://developer.Android.com/reference/Android/graphics/Bitmap.html#compress(Android.graphics.Bitmap.CompressFormat , int, Java.io.OutputStream)

4
EboMike

Diese Antwort ist ein Update mit etwas mehr Rücksicht auf OOM und verschiedene andere Lecks.

Angenommen, Sie haben ein als Ziel bestimmtes Verzeichnis und eine Namenszeichenfolge bereits definiert.

    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) {}
    }
0
Abandoned Cart

Übergeben Sie die Bitmap an die saveImage-Methode. Sie speichert Ihre Bitmap im Namen einer saveBitmap im erstellten Testordner.

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

und benutze das:

  saveImage(bitmap);
0
Opriday