2012-05-29 102 views
1

我有一個用於繪製的位圖對象,並且我想使用JPEG格式將圖像保存在SDCARD上。我有以下代碼:無法將位圖保存爲JPEG

public void saveBitmap() throws IOException { 

     String path=Environment.getExternalStorageDirectory().getAbsolutePath()+"/output.jpg"; 
     File output=new File(path); 

     BufferedOutputStream ous = null; 
     try { 
      ous=new BufferedOutputStream(new FileOutputStream(output)); 
      mBitmap.compress(CompressFormat.JPEG, 100, ous); 
      ous.flush(); 
      ous.close(); 
     } finally { 
      if (ous!=null) { 
       try { 
        ous.close(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
        Log.e("closing", e.getMessage()); 
       } 
      } 
     } 
    } 

但執行此功能後,我總是可以看到帶有黑色背景的jpeg文件。如果我將格式更改爲PNG,則全部都可以。我在哪裏犯了一個錯誤?

代碼繪製:

@Override 
    protected void onDraw(Canvas canvas) { 

     canvas.drawColor(0x00FFFFFF); 
     canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); 
     canvas.drawPath(mPath, mPaint); 
    } 
+3

你的意思是說它只是黑色,或者你的圖像背後是黑色背景而不是透明的?如果你的意思是後者(我認爲你不這樣做,但是)JPEG不支持透明度。 – kcoppock

+0

我的意思是第一個。 – user1166635

回答

1

JPEG格式不支持透明度。這就是爲什麼它保存時將黑色透明化。

+0

謝謝。我還需要知道一件事 - 我需要有「清除」按鈕 - 如何清除繪圖視圖? – user1166635

+0

你是怎麼畫的?在畫布上? – HandlerExploit

+0

我剛剛添加了繪圖代碼:我使用自定義視圖和位圖。另外,請告訴我如何設置白色背景? – user1166635