|
#1
|
|||
|
|||
Цветовая палитра
Пролистав сотню статей на эту тему, так и не нашел ответ на свой вопрос: "как получить массив цветов Цветовой Палитры, для конкретного Битмапа?" , не цвета, которые на нем нарисованны, а цвета палитры, которую он использует.
например, чтоб заполнился массив Colors:array{R} of array{G} of array{B} of boolean; в котором true будет означать, что в данной цветовой паллитре используется этот цвет) |
#2
|
|||
|
|||
Не совсем понятен вопрос... Тебя интересует получение уникальных цветов в изображении или преобразование в палитру 256 цветов?
Если первое, то ты в общем сам себе ответил. Правда вариант с таким массивом затратный по используемой памяти, для 24 бит RGB еще терпимо, а вот для 32 бит RGBA такой вариант уже не пременим т.к. требует массив около 4 гигабайт. Можно рассматривать изображение как массив, достаточно выполнить сортировку и откинуть повторяющиеся цвета. Правильней всего использовать дерево, идеально подойдет октодерево, реализация будет сложней, зато расход памяти и скорость будут оптимальными. |
#3
|
|||
|
|||
каждое изображение в формате Bitmap имеет pixelformat, отвечающий, за цвета которые могут использоваться в текущем Bitmapе, не факт, что на нем все они изображены, поэтому пройтись по нему попикслено будет бесполезно, в зависимости от pixelformatа Палитра bitnapа может иметь нное количество возможных цветов
1 = 2 colors 4 = 16 colors 8 = 256 colors 15 = 32768 colors 16 = 65535 colors 24 = 16,777,216 colors 32 = 16,777,216 colors (то же, что и 24) так вот, мне нужно получить сами эти цвета, а вопрос в том, "как?" |
#4
|
|||
|
|||
ты не совсем правильно понимаешь понятие "палитра", смотри описание формата BMP.
Цитата:
Цитата:
|
#5
|
|||
|
|||
правильно ли я понял, что в изображениях больше 8 бит палитра формируется из цветов, пикселей изображения?
|
#6
|
|||
|
|||
Все верно, в изображениях которые имеют более 8 бит на пиксел, каждый отдельный пиксел несет информацию о цвете, для 24 бит это три байта на пиксел r, g и b.
|