2017-05-10 89 views
1

已詢問herehere - 但兩者的所有答案都不起作用(我花了一個多小時嘗試了所有答案)。用透明像素填充緩衝圖像

問題的一部分我認爲背景需要設置爲白色,alpha爲0。這樣,對於不支持alpha的程序或格式,顏色是白色而不是黑色。

所以我的問題是,我如何將創建的BufferedImage設置爲全透明白色的背景?

我的代碼(其設置爲不透明的白色):

image = new BufferedImage((sectPage.getPaperWidth().getValue() * dpi)/1440, 
     (sectPage.getPaperHeight().getValue() * dpi)/1440, 
     BufferedImage.TYPE_INT_ARGB); 
// bugbug - https://stackoverflow.com/questions/321736/how-to-set-dpi-information-in-an-image 
graphics = image.createGraphics(); 

graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); 
graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 
graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); 

// bugbug - want all clear 
graphics.setColor(new Color(255, 255, 255)); 
graphics.fillRect(0,0,(sectPage.getPaperWidth().getValue() * dpi)/1440, (sectPage.getPaperHeight().getValue() * dpi)/1440); 

還試圖使在彩色用α設置爲0和的setBackground()。在這兩種情況下都有背景背景。

+0

例如,在構造函數'Color(int r,int g,int b,int a)'的幫助下創建一個帶alpha通道的'Color'。 –

+0

@ Jean-BaptisteYunès我應該說我嘗試過 - 變黑了。 –

+0

你期望什麼?你以後對圖像做了什麼? –

回答

0

這是我的一個愚蠢的錯誤。我將這件事留給其他人來解決同樣的問題。

graphics.setBackground(new Color(0x00FFFFFF, true)); 
graphics.clearRect(0, 0, sectPage.getPaperWidth().getValue(), sectPage.getPaperHeight().getValue()); 

工程。我的問題是我用黑色查看清晰背景的程序。它曾經使用標準的白色/灰色棋盤。所以對於任何人認爲這是行不通的...

查看您的位圖與多個程序!

+0

只是一個選項:'新顏色(255,255,255,0)'... –