在Java中设置BufferedImage alpha蒙版

我有两个从png加载的BufferedImages。第一个包含图像,第二个包含图像的Alpha蒙版。

我想通过应用Alpha蒙版从两者创建组合图像。我的谷歌福使我失败。

我知道如何加载/保存图像,我只需要从两个BufferedImage到具有正确alpha通道的一个BufferedImage的位。

回答:

通过一次获取多个像素以上的RGB数据,可以改善您的解决方案(请参见http://java.sun.com/javase/6/docs/api/java/awt/image/BufferedImage.html),并通过不在内部循环的每次迭代上创建三个Color对象。

final int width = image.getWidth();

int[] imgData = new int[width];

int[] maskData = new int[width];

for (int y = 0; y < image.getHeight(); y++) {

// fetch a line of data from each image

image.getRGB(0, y, width, 1, imgData, 0, 1);

mask.getRGB(0, y, width, 1, maskData, 0, 1);

// apply the mask

for (int x = 0; x < width; x++) {

int color = imgData[x] & 0x00FFFFFF; // mask away any alpha present

int maskColor = (maskData[x] & 0x00FF0000) << 8; // shift red into alpha bits

color |= maskColor;

imgData[x] = color;

}

// replace the data

image.setRGB(0, y, width, 1, imgData, 0, 1);

}

以上是 在Java中设置BufferedImage alpha蒙版 的全部内容, 来源链接: utcz.com/qa/417814.html

回到顶部