2014-11-25 216 views
1

由於某些原因,BufferedImage在編寫縮放圖像時會產生黑色輸出,但Image會正確縮放。我認爲這裏有一些繪畫組件的問題。謝謝!BufferedImage會產生黑色輸出

+0

它應該是透明的嗎?如果是這樣的.jpg文件沒有透明度,你必須使用.png – JRowan 2014-11-25 03:21:25

+0

當然不是,這是一個正常的RGB圖像,但由於某種原因它不寫入Imagebuffer。 – ProgLearner 2014-11-25 03:23:58

+0

哦,我只是以爲你的意思是它顯示黑色,.jpg文件中的透明度將是黑色 – JRowan 2014-11-25 03:25:56

回答

3
BufferedImage newImage = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB); 

如果將具有透明度的PNG或GIF放在它上面,透明部分將變成黑色。它應該是:

BufferedImage newImage = new BufferedImage(400, 400, BufferedImage.TYPE_INT_ARGB); 

但後來,我建議:

  • 只有保存爲JPEG格式,如果原始圖像是JPEG
  • 沒有使用ImageIcon加載一個Image,而是使用ImageIO加載一個BufferedImage
  • 使用緩衝圖像getType()作爲參數,而不是BufferedImage.TYPE_..
  • 避免getScaledInstance(..)like the plague,但如果使用它,指定Image.SCALE_SMOOTH