Java 如何制作BuffereImage“;“更弱”吗;?

Java 如何制作BuffereImage“;“更弱”吗;?,java,swing,bufferedimage,Java,Swing,Bufferedimage,我正在画一幅缓冲区图像 BufferedImage map = ImageIO.read(getClass().getResource("map.png")); 但是我想要么a)在上面放一个更白的滤镜,要么b)改变alpha值,使它不那么亮。我试过了 for (int x = 0; x < map.getWidth(); x++) { for (int y = 0; y < map.getHeight(); y++) { in

我正在画一幅缓冲区图像

BufferedImage map = ImageIO.read(getClass().getResource("map.png"));
但是我想要么a)在上面放一个更白的滤镜,要么b)改变alpha值,使它不那么亮。我试过了

for (int x = 0; x < map.getWidth(); x++) {
        for (int y = 0; y < map.getHeight(); y++)
        {
            int tempcolor = map.getRGB(x, y);
            int newalpha = (60 << 24) | (tempcolor & 0x00ffffff);
            map.setRGB(x, y, newalpha);
        }
        }
g.drawImage(map, 0, 0, this);
for(int x=0;xint newalpha=(60您可以使用重新缩放,因为它处理alpha

    RescaleOp rescale = new RescaleOp(1.2f, 15, null);
    rescaleOp.filter(image, image); // Source and destination are the same.
这也可能对你有更多帮助


还有一个用于亮度控制

您可以使用重新缩放,因为它处理alpha

    RescaleOp rescale = new RescaleOp(1.2f, 15, null);
    rescaleOp.filter(image, image); // Source and destination are the same.
这也可能对你有更多帮助


另外一个用于亮度控制的Alpha将只允许下层显示。如果没有下层,则什么也不会发生。这是有意义的。因此,我可以在其后面添加一个白色层,这将解决问题。虽然可能比使用
重缩放
更慢,但如果您有图像类型,您的原始代码应该可以工作(
buffereImage.TYPE_xxx
)它支持alpha,比如
BufferedImage。键入\u INT\u ARGB
。alpha只允许较低的层显示。如果没有较低的层,则什么也不会发生。这是有意义的。因此我可以在它后面添加一个白色层,这应该可以解决问题。尽管可能比使用
重新缩放
要慢,但考虑到你有一个支持alpha的映像类型(
BufferedImage.type\u xxx
),比如
BufferedImage.type\u INT\u ARGB