簡體   English   中英

使用透明像素填充BufferedImage

[英]Filling a BufferedImage with transparent pixels

這里這里都被問 - 但兩者的所有答案都不起作用(我花了一個多小時嘗試了所有這些)。

部分問題我認為背景需要設置為白色,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);

還嘗試傳入alpha設置為0和setBackground()的顏色。 在這兩種情況下都有背景。

這對我來說是一個愚蠢的錯誤。 我將其留給那些遇到同樣問題的人。

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

作品。 我的問題是我正在查看它的程序,使用黑色為清晰的背景。 它曾經使用標准的白色/灰色棋盤。 對於那些認為這不起作用的人來說......

使用多個程序查看您的位圖!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM