3

我似乎遇到了一个问题,我创建了一个具有如下透明像素的 BufferedImage:

BufferedImage buff = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_ARGB);

它工作正常,直到我通过 RescaleOp 过滤它以使其变暗。当我这样做时,图像消失了。这是我的完整代码,您可以看到我是如何设置的:

    BufferedImage buff = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = buff.createGraphics();
    g.drawImage(i, 0, 0, null);
    g.dispose();
    RescaleOp filter = new RescaleOp(lightlevel, 0f, null);
    buff = filter.filter(buff, null);

我的问题是,我该如何解决这个问题,以便缓冲图像的像素变暗而不影响透明度?

4

1 回答 1

2

您可以尝试RescaleOp处理alpha的方法,如图所示lightLevel并对所有颜色组件使用相同的方法。

于 2012-03-08T05:11:42.010 回答