在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