1

rgbバイトを操作して画像にデータを保存しようとしています。ただし、変換rgb-byte[]とその逆が同じ値を返すことはありません。ビットシフトを伴う独自のメソッドを使用した後、Java Colorクラスを使用しましたが、アルファチャネルにバグがあるようです。次のテスト方法はカラー値に対しては正常に機能しますが、アルファ値は毎回異なります。

Random r = new Random();
int red = r.nextInt(255), green = r.nextInt(255), blue = r.nextInt(255), alpha = r.nextInt(255); 
Color one = new Color(red, green, blue, alpha);
Color two = new Color(one.getRGB());
System.out.println(one.getRed() + " " + one.getGreen() + " " + one.getBlue() + " " + one.getAlpha());
System.out.println(two.getRed() + " " + two.getGreen() + " " + two.getBlue() + " " + two.getAlpha());  

私は何か間違ったことをしていますか、それともJavaにバグがありますか?

4

1 に答える 1

0

引数が 1 つのColorコンストラクターはアルファを無視します。引数が 2 つのコンストラクターを使用します。

Color two = new Color(one.getRGB(), true);
于 2012-09-28T17:20:06.997 に答える