【发布时间】:2017-05-10 17:06:54
【问题描述】:
here 和 here 已经问过这个问题 - 但两者的所有答案都不起作用(我已经花了一个多小时尝试了所有答案)。
我认为部分问题是背景需要设置为白色,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() 的颜色。在这两种情况下都有背景。
【问题讨论】:
-
创建一个带有 alpha 通道的
Color,例如在构造函数Color(int r, int g, int b, int a)的帮助下。 -
@Jean-BaptisteYunès 我应该说我试过了 - 变黑了。
-
你期待什么?之后你会如何处理图像?
-
查看我的回答 here 了解如何用透明颜色填充矩形(使用选项 2,使用
new Color(0x00FFFFFF, true)或new Color(255, 255, 255, 0))。这将满足您的要求。但我不确定效果是否是您想要的,因为图像编码器可以将所有透明颜色标准化(透明黑色),或者不支持 alpha 的软件可能只是用不同的颜色替换它。
标签: java bufferedimage