У меня есть массив байтов:Как преобразовать ARGB в массив RGB байтов?
byte[] blue_color = {-1,0,112,-64};
Как преобразовать в массив байтов в RGB?
А также как я могу получить реальное значение RGB для цвета?
У меня есть массив байтов:Как преобразовать ARGB в массив RGB байтов?
byte[] blue_color = {-1,0,112,-64};
Как преобразовать в массив байтов в RGB?
А также как я могу получить реальное значение RGB для цвета?
Как конвертировать 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
.
Предполагая, что это первый элемент, компонент-A:
byte[] rgb = Arrays.copyOfRange(blue_color, 1, 4);
Чтобы получить «реальное» значение цвета, вам нужно отменить двоичное дополнение представления:
int x = (int)b & 0xFF;
Как конвертировать в байтовый массив 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;
Это не так. 256 следует добавить к отрицательным значениям. – Sulthan
@OliCharlesworth oops, я имел в виду '+ 256';) –
Возможно, вам стоит узнать, что такое ARGB и что такое RGB ... – Sulthan
так вот почему я спрашиваю – kenny
Нет, вы спрашиваете что-то совершенно другое. – Sulthan