7

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) メソッドがありますが、アルファ値が含まれているかどうか、またはそれを抽出する方法がわかりません。

誰でも私を助けることができますか?ありがとうございました!

4

3 に答える 3

7
public static boolean isAlpha(BufferedImage image, int x, int y)
{
    return image.getRBG(x, y) & 0xFF000000 == 0xFF000000;
}
for(int x = 0; x < width; x++)
{
    for(int y = 0; y < height; y++)
    {
        alphaArray[x][y] = isAlpha(bufferedImage, x, y);
    }
}
于 2012-05-02T19:05:57.433 に答える
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;
            }
        }
    }
于 2012-05-02T19:14:36.587 に答える
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
}
于 2012-05-07T14:23:53.083 に答える