使用透明像素填充BufferedImage

时间:2017-05-10 17:06:55

标签: java bufferedimage

这已经被问到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);

还尝试传入alpha设置为0和setBackground()的颜色。在这两种情况下都有背景。

0 个答案:

没有答案