[英]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.