1

ピクセルのRGBカラーからColorオブジェクトを作成する必要があります(PNGファイルを読み取るBufferedImageオブジェクトの場合、BufferedImage色空間はBufferedImage.TYPE_4BYTE_ABGRです)。ただし、一部の色には問題があります。以下のコードと出力を参照してください。それはある種の色空間の問題だと思いますが、それを解決する方法がわかりません):ヒントをありがとう!

// imagine some great loop for x,y around the following code
int color = myImage.getRGB(x, y);

Color c = new Color(myImage.getRGB(x, y));

if(c.getRGB() != color)
    System.out.println("fail " + color + " vs " + c.getRGB());

出力:

fail -116782582 vs -16119286
fail 0 vs -16777216
fail 117440511 vs -1
fail -1090519040 vs -16777216
fail 1488435127 vs -4737097
fail -1090453247 vs -16711423

といくつか。役立つ場合:たとえば、透明度が黒になります。新しいColorオブジェクトはBufferedImage以外の色空間を使用していると思いますが、新しいColorオブジェクトの色空間を設定する方法がわかりませんか?それとも、RGB情報だけでは色を再現するのに十分ではありませんか?

4

1 に答える 1

1

問題は、アルファ情報をカラーで捨てていることだと思います。私はあなたが次のことをする必要があると思います:

int color = myImage.getRGB(x, y);
ColorModel model = myImage.getColorModel();
Color c = new Color(color, model.hasAlpha());
于 2012-05-08T18:57:45.303 に答える