在java中为方法drawImage()更改图像的alpha

时间:2013-04-14 02:18:19

标签: java graphics bufferedimage alpha drawimage

我正试图改变图像的透明度,我正在使用drawImage()中的java.awt.Graphics方法进行此操作。我知道网上有很多关于如何做到这一点的不同答案,但我找不到一个足以让我理解和实施的答案。

我们只想说我有BufferedImage图像,我想以50%的不透明度绘制此图像。我如何初始化image以及在绘制图像时如何调整图像的alpha级别。如果我可以使用方法drawImage()并使用方法来改变图像的透明度,那将是很好的,但它可能不那么简单。

2 个答案:

答案 0 :(得分:7)

从未尝试过,但我认为基本代码是:

AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
g2d.setComposite(ac);
g2d.drawImage(...);

答案 1 :(得分:1)

使用图像过滤器。

float[] scales = { 1f, 1f, 1f, 0.1f };
float[] offsets = new float[4];
RescaleOp rop = new RescaleOp(scales, offsets, null);
g2d.drawImage(buffimg, rop, 0, 0);

scale数组中的第4个元素是透明度,此值介于0 - 1

之间

通过camickr的回答将使整个组件应用包括所有内部组件的alpha。但那会更快。

警告:小心使用图像过滤器

参考:http://www.informit.com/articles/article.aspx?p=1013851&seqNum=2