Значения 1
... 10
на самом деле do представляют разные цвета: это разные оттенки синего, но такие темные, что почти не отличаются от черного.
Пиксели на изображении типа BufferedImage.TYPE_INT_RGB
представлены как int
значения. Они состоят из 4 байтов. Последние три байта определяют красный, зеленый и синий (R, G, B) компоненты.
Обратите внимание, что для изображения типа BufferedImage.TYPE_INT_ARGB
первый байт будет альфа-компонентом (непрозрачность). Для такого изображения вам также нужно установить первый байт на 255
- иначе пиксели останутся прозрачными.
Итак, это ваши цвета:
RRGGBB
0x000001
0x000004
0x000007
0x000010
Значение типа
0x0000FF
будет полностью насыщенным синим цветом.
Чтобы назначить цвета пикселям на основе этих значений, было бы полезно узнать, сколько цветов вы ожидаете. Одним из подходов может быть просто заполнить массив случайными цветами и посмотреть их позже:
int numColors = 10;
int colors[] = new int[numColors];
Random random = new Random(0);
for (int i=0; i<numColors; i++) {
colors[i] = 0xFF000000 | random.nextInt();
}
// In your loop:
img.setRGB(i,j, colors[newPixel[i][i]]);
Обратите внимание, что вы не можете быть уверены, что эти случайные цвета будут легко различимы. В качестве альтернативы, вы можете использовать общую карту цветов. Примеры можно найти в Интернете, например, по http://colorbrewer2.org/#type=qualitative&scheme=Paired&n=11. Используя их, вы можете напрямую определить массив цветов следующим образом:
int colors[] =
{
0xffa6cee3,
0xff1f78b4,
0xffb2df8a,
0xff33a02c,
0xfffb9a99,
0xffe31a1c,
0xfffdbf6f,
0xffff7f00,
0xffcab2d6,
0xff6a3d9a,
0xffffff99
};