更改BufferedImage的alpha值?

Wil*_*iam 8 java graphics bufferedimage

如何在Java中更改BufferedImage的全局alpha值?(IE使图像中每个像素值为100的像素的alpha值为80)

小智 10

@Neil Coffey:谢谢,我一直在寻找这个; 但是,你的代码对我来说效果不好(白色背景变黑).

我编写了类似这样的东西,它完美地工作:

public void setAlpha(byte alpha) {       
    alpha %= 0xff; 
    for (int cx=0;cx<obj_img.getWidth();cx++) {          
        for (int cy=0;cy<obj_img.getHeight();cy++) {
            int color = obj_img.getRGB(cx, cy);

            int mc = (alpha << 24) | 0x00ffffff;
            int newcolor = color & mc;
            obj_img.setRGB(cx, cy, newcolor);            

        }

    }
}
Run Code Online (Sandbox Code Playgroud)

其中obj_img是BufferedImage.TYPE_INT_ARGB.

我用setAlpha((byte)125)改变alpha; alpha范围现在是0-255.

希望有人觉得这很有用.


Mic*_*vis 4

我不相信有一个简单的命令可以做到这一点。几个选项:

IMO,第一个是最容易实现的。