2016-08-05 12 views
0

Ich habe eine App, die das Filterbild verwendet und speichern in SD-Karte funktioniert es gut, aber ich möchte Bild in zwei hohen und niedrigen Auflösung speichern, habe ich noch nie versucht, Auflösung, Jeder kann man helfen, wie in diesen beiden Auflösung zu speichern? Mein Code ist untenWie man ein Bild mit hoher Auflösung macht

private void saveBitmap(Bitmap bmp, String fileName, int resolution, String resolutionQuality) { 
//   File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + fileName + ".png"); 
     File f = new File(Environment.getExternalStorageDirectory() + "FiltureImages"); 
     if (!f.exists()) { 
      File wallpaperDirectory = new File("/sdcard/FiltureImages/"); 
      wallpaperDirectory.mkdirs(); 
     } 
     File file = new File(new File("/sdcard/FiltureImages/"), fileName + resolutionQuality + ".png"); 
     if (file.exists()) { 
      file.delete(); 
     } 
     try { 
      fos = new FileOutputStream(file); 

      bmp.compress(Bitmap.CompressFormat.PNG, resolution, fos); 
      Toast.makeText(mActivity, "Image save successfully", Toast.LENGTH_SHORT).show(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 

Antwort

0

Aufruf wie folgt saveBitmap(bm, "high", "low", 100, 0, "quality");

Qualitätsbereich von 0 -100

Hinweis: Änderung Bitmap.CompressFormat.PNG-Bitmap.CompressFormat.JPEG beacuse Qualität arbeitet mit JPEG-Format.

private void saveBitmap(Bitmap bmp, String fileNameHigh, String fileNameLow, int resolutionHigh, int resolutionLow, String resolutionQuality) { 

     File f = new File(Environment.getExternalStorageDirectory() + "FiltureImages"); 
     if (!f.exists()) { 
      f.mkdirs(); 
     } 
     File file = new File(f, fileNameHigh + resolutionQuality + ".png"); 
     if (file.exists()) { 
      file.delete(); 
     } 
     File file1 = new File(f, fileNameLow + resolutionQuality + ".png"); 
     if (file1.exists()) { 
      file1.delete(); 
     } 
     try { 
      FileOutputStream high = new FileOutputStream(file); 
      FileOutputStream low = new FileOutputStream(file1); 

      bmp.compress(Bitmap.CompressFormat.JPEG, resolutionHigh, high); 
      bmp.compress(Bitmap.CompressFormat.JPEG, resolutionLow, low); 
      Toast.makeText(this, "Image save successfully", Toast.LENGTH_SHORT).show(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
      Toast.makeText(this, "Image save falid", Toast.LENGTH_SHORT).show(); 
     } 
    } 
+0

Ok Danke, Lat mich versuchen !!! –

+0

Es funktioniert für mich Vielen Dank !!! –

+0

@Komal Thats Große glücklich Codierung :) –

0

ein zweites Bitmap mit einer alternativen Auflösung auf diese Weise erstellen und scaledBmp.compress() in eine neue Datei aufrufen.

 Bitmap scaledBmp = Bitmap.createScaledBitmap(bmp, newWidth, newHeight, false);