如何在 Java 中找到 BufferedImage 的 Alpha 位置?

问题描述 投票:0回答:3

我有一个 BuferredImage 和一个 boolean[][] 数组。 我想将数组设置为 true,其中图像完全透明。

类似:

for(int x = 0; x < width; x++) {
    for(int y = 0; y < height; y++) {
        alphaArray[x][y] = bufferedImage.getAlpha(x, y) == 0;
    }
}

但是 getAlpha(x, y) 方法不存在,而且我没有找到其他可以使用的方法。 有一个 getRGB(x, y) 方法,但我不确定它是否包含 alpha 值或如何提取它。

有人可以帮助我吗? 谢谢!

java graphics alpha bufferedimage
3个回答
7
投票
public static boolean isAlpha(BufferedImage image, int x, int y)
{
    return image.getRGB(x, y) & 0xFF000000 == 0;
}
for(int x = 0; x < width; x++)
{
    for(int y = 0; y < height; y++)
    {
        alphaArray[x][y] = isAlpha(bufferedImage, x, y);
    }
}

2
投票

试试这个:

    Raster raster = bufferedImage.getAlphaRaster();
    if (raster != null) {
        int[] alphaPixel = new int[raster.getNumBands()];
        for (int x = 0; x < raster.getWidth(); x++) {
            for (int y = 0; y < raster.getHeight(); y++) {
                raster.getPixel(x, y, alphaPixel);
                alphaArray[x][y] = alphaPixel[0] == 0x00;
            }
        }
    }

1
投票
public boolean isAlpha(BufferedImage image, int x, int y) {
    Color pixel = new Color(image.getRGB(x, y), true);
    return pixel.getAlpha() > 0; //or "== 255" if you prefer
}
© www.soinside.com 2019 - 2024. All rights reserved.