如何在Java中使透明图像不透明?

时间:2013-08-11 06:19:28

标签: java graphics png transparency bufferedimage

对于Java程序(“常规”程序,而不是Applet和/或Android等),我有PNG具有透明度,可以在其他图片上加载和绘制,这非常合适。现在,对于他们下面没有其他图片的情况(确定是否是这种情况不是问题,相应的代码已经在工作中实现),我希望它们变得不透明,但不是简单的设置背景色;因为有关的png源文件是完全着色的,只是降低了它们的不透明度(alpha值),我想,简单地将所有颜色的不透明度增加到100%都没问题,我只是不知道命令来做到这一点。首选和迄今为止有针对性的方法是将它们绘制在BufferedImage中,然后分别进行修改,但如上所述:如何?

TLDR:来自.png的图像,其中< 100%不透明度(整张照片上的值相同),如何在Java中制作opaque,最好使用BufferedImage,甚至更简单

提前感谢任何答案

1 个答案:

答案 0 :(得分:2)

您可以尝试RescaleOp将alpha组件一直缩放为不透明:

float[] scales = { 1f, 1f, 1f, 0f };  // R, G, B, A
float[] offsets = {0f, 0f, 0f, 255f};   // R, G, B, A
RescaleOp rescaler = new RescaleOp(scales, offsets, null);
BufferedImage opaque = rescaler.filter(original, null);

有关详细信息,请参阅this Java 2D tutorial