-1

私はバイト配列を持っています:

byte[] blue_color = {-1,0,112,-64};

RGBのバイト配列に変換する方法は?

また、色の実際のRGB値を取得するにはどうすればよいですか?

4

3 に答える 3

2

それがAコンポーネントである最初の要素であると仮定します。

byte[] rgb = Arrays.copyOfRange(blue_color, 1, 4);

「実際の」色の値を取得するには、2の補数表現を元に戻す必要があります。

int x = (int)b & 0xFF;
于 2012-05-16T15:38:02.803 に答える
1

ARGB配列をRGBに変換する方法は?


byte[] argb = ...;
byte[] rgb = new byte[(argb.length / 4) * 3];

int index = rgb.length - 1;

for (int i = argb - 1; i >= 0; i -= 4) {
  rgb[index--] = argb[i];
  rgb[index--] = argb[i - 1];
  rgb[index--] = argb[i - 2];
}

整数値を出力する方法:



byte[] oneColor = {..., ..., ..., ...};

int alpha = oneColor[0] & 0xFF;
int red = oneColor[1] & 0xFF;
int green = oneColor[2] & 0xFF;
int blue = oneColor[3] & 0xFF;

System.out.println("Color: " + alpha + ", " + red + ", " + green ", " + blue);

System.out.println("Hexa color: 0x" + Integer.toHexString(alpha) + " " + Integer.toHexString(red) + " " + Integer.toHexString(green) + " " + Integer.toHexString(blue));

でよりきれいに行うことができますprintf

于 2012-05-16T15:57:19.637 に答える
0

RGBのバイト配列に変換する方法は?

byte[] rgb = new byte[3];
System.arraycopy(blue_color, 1, rgb, 0, 3);

また、色の実際のRGB値を取得するにはどうすればよいですか?

int red = rgb[0] >= 0 ? rgb[0] : rgb[0] + 256;
int green = rgb[1] >= 0 ? rgb[1] : rgb[1] + 256;
int blue = rgb[2] >= 0 ? rgb[2] : rgb[2] + 256;
于 2012-05-16T15:56:56.547 に答える