Java缓冲图像RescaleOp透明度问题

时间:2012-03-08 03:57:04

标签: java graphics transparency bufferedimage brightness

我似乎遇到了一个问题,即我创建了一个具有透明像素的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);

我的问题是,如何修复此问题,以使缓冲的图像的像素变暗而不会影响透明度?

1 个答案:

答案 0 :(得分:2)

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