Меню

Как сделать bmp картинку 256 цветов



Как сделать bmp картинку 256 цветов

ИЛИ конверТИРОВАТЬ ОБЫЧНУЮ В 256 ЦВЕТОВ. НАДО ЧТОБЫ ВКЛЮЧИТЬ В РЕСУРСНЫЙ ФАЙЛ.НЕ ОСУЖДАЙТЕ МЕНЯ ЗА ЛАМЕРСТВО, ПРОСТО ДЕЛФИ КУПИЛ НЕДЕЛЮ НАЗАД.


PEOPLE ( 2003-03-08 13:51 ) [1]


Урб ( 2003-03-08 15:04 ) [2]

Photoshop-ом
или
XnView скачай — он фриварный


PEOPLE ( 2003-03-08 15:21 ) [3]

НЕ НУ НАПРИМЕР ГДЕ В ФОТОШОПЕ указать сколько цветов будет в рисунке?


A_n_t ( 2003-03-08 16:58 ) [4]

Image -> Mode -> Indexed color -> OK

Источник

Преобразование между цветовыми режимами

На этой странице

某些 Creative Cloud 应用程序、服务和功能在中国不可用。

В Photoshop можно легко создать изображение в одном цветовом режиме и преобразовать его в другой, например, чтобы подготовить его для конкретного задания печати.

Преобразование изображения в другой цветовой режим

Изображение можно перевести из его оригинального (исходного) режима в другой (целевой). Выбор для изображения другого цветового режима приводит к необратимому изменению содержащихся в изображении значений цвета. Например, при преобразовании изображения RGB в режим CMYK цветовые значения RGB, выходящие за пределы цветового охвата CMYK (определенного параметром рабочего пространства CMYK в диалоговом окне «Настройка цветов» ), корректируются для попадания в этот цветовой охват. В результате этого некоторые данные изображения могут быть утрачены и не восстановятся при обратном переходе из режима CMYK в RGB.

Перед преобразованием изображения лучше всего выполнить следующие действия.

Выполните как можно больший объем редактирования в исходном режиме изображения (обычно для изображений, полученных с большинства сканеров и цифровых камер, это RGB, а для изображений, полученных с традиционных сканеров барабанного типа или импортированных из систем Scitex, это CMYK).

Перед преобразованием сохраните резервную копию изображения. Обязательно сохраните копию изображения, содержащую все слои, чтобы после преобразования можно было вернуться к редактированию исходной версии изображения.

Выполните сведение изображения, прежде чем его преобразовывать. При изменении режима изменится взаимодействие цветов между режимами наложения слоев.

В большинстве случаев перед преобразованием необходимо свести все слои файла. Однако в некоторых случаях (например, если файл содержит слои векторного текста) выполнять эту операцию не требуется и даже не рекомендуется.

При преобразовании изображения в режим «Многоканальный», «Битовый формат» или «Индексированные цвета» производится его сведение, поскольку в этих режимах слои не поддерживаются.

Преобразование изображения в битовый режим

В результате преобразования изображения в битовый режим количество цветов в изображении сокращается до двух, что значительно упрощает его структуру и уменьшает размер файла.

При преобразовании цветного изображения в битовый режим это изображение сначала нужно перевести в режим градаций серого. В результате из пикселов удаляется информация о цветовом тоне и насыщенности и остаются только значения яркости. Но, поскольку для битовых изображений доступно очень немного функций редактирования, обычно имеет смысл редактировать эти изображения в режиме градаций серого и только затем преобразовывать их в битовый режим.

Изображения в битовом режиме содержат 1 бит на канал. Прежде чем преобразовывать в битовый режим изображение, содержащее 16 или 32 бита на канал, такое изображение необходимо сначала преобразовать в 8-битное в режиме градаций серого.

Если изображение цветное, выберите «Изображение» > «Режим» > «Градации серого». После этого выберите «Изображение» > «Режим» > «Битовый формат».

Если изображение выполнено в градациях серого, выберите «Изображение» > «Режим» > «Битовый формат».

Преобразует пикселы со значениями серого выше среднего уровня (128) в белые, а ниже этого уровня — в черные. В результате получается высококонтрастное черно-белое представление изображения.

Преобразует изображение, формируя из уровней серого геометрические структуры, состоящие из черных и белых точек.

Преобразует изображение с использованием метода диффузии, начиная с левого верхнего пиксела изображения. Если значение пиксела выше среднего серого (128), он становится белым, если ниже — черным. Поскольку исходный пиксел редко бывает просто белым или просто черным, неизбежно возникает погрешность, Эта ошибка переносится на окружающие пикселы и случайным образом распределяется по изображению, образуя гранулярную, зернистую текстуру, похожую на кинопленку.

Имитирует в преобразованном изображении полутоновые точки. В диалоговом окне «Полутоновый растр» вводятся следующие значения:

В поле «Линиатура» укажите значение линиатуры растра, выбрав единицу измерения. Значение может находиться в диапазоне от 1,000 до 999,999 линий на дюйм, либо от 0,400 до 400,00 линий на сантиметр. Можно вводить десятичные значения. Линиатура растра определяет частоту полутонового растра в линиях на дюйм (lpi). Линиатура зависит от используемой при печати марки бумаги и типа печатной машины. Для газет обычно используется линиатура в 85 линий, а для журналов — в 133 или 150 lpi. Уточните правильное значение линиатуры в своей типографии.

Читайте также:  Какого цвета боится комар

Введите значение угла растра в градусах от -180 до +180. Это значение определяет ориентацию растра. Одноцветные и черно-белые полутоновые растры обычно имеют угол 45°.

В поле «Фигура» выберите желательную форму точки.

Полутоновый растр становится частью изображения. Если изображение печатается на полутоновом принтере, то наряду с полутоновым растром, входящим в изображение, принтер использует еще и собственный полутоновый растр. В результате на некоторых принтерах возможно появление муара.

Имитирует в преобразованном изображении заказной полутоновый растр. Выберите узор, для которого можно изменить толщину, — обычно узор с множеством оттенков серого.

Чтобы воспользоваться этим параметром, необходимо сначала определить узор и отрастрировать изображение в градациях серого для применения текстуры. Чтобы покрыть все изображение, размер узора должен быть не меньше размера изображения. В противном случае узор будет повторяться мозаикой. В комплекте Photoshop поставляется несколько самоповторяющихся узоров, которые могут быть использованы для полутонового растра.

Чтобы подготовить для преобразования черно-белый узор, преобразуйте изображение в градации серого и несколько раз примените фильтр «Размытие +». В результате получатся толстые линии с постепенными переходами от темно-серого до белого.

Источник

Как сделать bmp картинку 256 цветов

Группа: Участник
Сообщений: 349

Здравствуйте. Собственно, САБЖ. Необходимо создать палитру 256 цветов и сохранить ее в файл.

Спасибо за внимание. Grigoriy

Отправлено: 20.02.2006, 15:50

Группа: Участник
Сообщений: 381

Сабж ?
Это ещё неизвестно.

Ну вопрос поставлен не совсем точно.
Возникают вопросы.
Вам нужно создавать палитру из цветов типа TrueColor ?
Тогда нужно определиться с зависимостью изменения цвета от номера цвета.
Учтите. Самих палитр из 256 цветов True Color может быть большое множество.
Читайте :
Каждый цвет может принимать количество значений = 256*256*256.
И каждое из этих значений может присутствовать в любой из 256 позиций.

Есть предположение о том, что вам нужно создать палитру, где для каждого приращения интенсивности зеленого цвета интенсивность красного цвета изменяется (корень квадратный(корень квадратный(256))) раз.
А для каждого приращения интенсивности синего цвета — интенсивность зеленого изменяется
(корень квадратный(256)) раз.

При изменении номера цвета чаще всего изменяется красный, реже зеленый и ещё реже синий.

Отредактировано Grigoriy — 20/02/2006, 15:52 Aptem

Отправлено: 20.02.2006, 17:51

Группа: Участник
Сообщений: 349

Я так понимаю палитра — это последовательность структур R, G, B и еще какой-то ненужный байт. Так? Но как она должна располагаться в bmp-файле? Имеется ввиду, например само изображение расположено вверх ногами, а как с палитрой.

Надеюсь понятно. Спасибо за помощь.

Отредактировано Aptem — 20/02/2006, 17:51 Grigoriy

Отправлено: 21.02.2006, 21:36

Группа: Участник
Сообщений: 381

Формат «*.bmp» файла следующий.

1. Сначала идут латинские символы «B» и «M».
2. Четырехбайтное значение размера файла в байтах.
3. Две двубайтные резервные области (равны 0 обе). Т. е. четере байта равны нулю.
4. Четырехбайтное значение смещения к началу растрового изображения.
Далее идет структура, характеризующая методику кодировки растра.
5. Размер (Четырехбайтное значение) этой структуры в байтах (должно быть 0x00000028).
6. Четырехбайтное значение ширины изображения в пикселах.
7. Четырехбайтное значение высоты изображения в пикселах.
8. Двухбайтное значение числа цветовых плоскостей (обычно равно 1).
9. Двухбайтное значение числа бит на пиксел (обычно равно 1 или 4 или 8 или 16 или 24 или 32).
10. Четырехбайтное значение метода сжатия (обычно 0).
11. Четырехбайтное значение размера собственного изображения в байтах.
12. Четырехбайтное значение разрешения по горизонтали в пикселах на метр.
13. Четырехбайтное значение разрешения по вертикали в пикселах на метр.
14. Четырехбайтное значение числа цветов в изображении.
15. Четырехбайтное значение числа важных цветов.

Далее следует палитра, если изображение не 24 или 32 битное.
Я не знаю, следует ли палитра, если изображение 16-битное ?

Палитра «*.bmp» файла представляет собой массив значений цветов, где каждый элемент массива размером в 4 байта, и самый младший байт (нулевой байт) кодирует интенсивность синей составляющей цвета, затем следующий байт кодирует интенсивность зеленой составляющей цвета, и наконец второй байт — интенсивность красной составляющей цвета. Самые старшие быйты каждого элемента ничего не кодируют.
Следует заметить, что цвет пиксела канвы кодируется не так.
Самый младший байт кодирует интенсивность красной составляющей цвета, а не синей. (Если мне не изменяет память).

Читайте также:  Подходящие цвета желтого цвета

Далее следуют перечисление номеров элементов палитры, которым соответствуют цвета определенных пикселов в порядке слева направо и снизу вверх.

Таким образом, если присутствует палитра, то пикселы «*.bmp» файла могут быть только таких цветов, которые имеются в палитре цветов.

Я бы задал такой вопрос.
А зачем Вам генерировать палитру ?

Вот пример кода.
Он не самый быстродействующий, но он хорошо показывает, как можно сгенерировать палитру из 256 цветов, чтобы было понятнее.

Источник

Формат и чтение BMP файла (BMP format)

Создайте в графическом редакторе PAINT растровое изображение размером 50*35 пикселов. Выберите максимальный масштаб изображения и включите сетку. Сохраните рисунок в формате BMP как монохромный (файл 50_35.bmp).

Откройте листинг файла 50_35.bmp в приложении Commander (TC, VC или WC) для просмотра (клавиша F3) в шестнадцатеричном (HEX) представлении.

Сопоставим картинку растрового изображения и HEX коды в листинге файла 50_35.bmp.

Коды с 19-го по 23-й (32 00 00 00) определяют размер растра (число пикселов) по горизонтали. Коды с 24-го по 27-й (23 00 00 00) определяют размер растра по вертикали. Чтобы убедиться в этом воспользуйтесь калькулятором. В рассматриваемом примере размер растра – 50 * 35. HEX коду 32 соответствует десятичное (DEC) число 50, HEX коду 23 – DEC число 35.

На размера растра отводится 4 байта (HEX кода). Одним байтом определяется размер от 0 до 255. При превышении 255 (код FF) будет задействован следующий байт. Например, DEC числу 256 соответствует HEX код 100. Размер растра 256 будет представлен в листинге файла (00 01 00 00).

Коды символов, начиная с 63-го и до конца файла, содержат последовательность данных о цвете точек растра – в порядке слева направо вдоль каждой ряда и снизу вверх по рядам. Один байт описывает 8 точек, белая точка в BIN коде описывается единицей, черная – нулем.

Сколько байт необходимо для описания 50 точек в одном ряду? Не менее 7 (7*8=56). Но используется 8 (8*8=64), соблюдается кратность 4 байтам (4*8=32). Обратите внимание в листинге файла на HEX коды в конце описания каждого ряда повторяются байты FF FF C0 00. Эти байты описывают последние 32 точки из 64-х. Из них 14 несуществующих точек (64-50=14) описаны нулями.

Точки какого ряда описаны кодом FC 1F? Отсчитываем ряды по (по 8 байт в каждом), можно также ориентироваться на код (C0 00) в конце каждого ряда. Получаем 11-й ряд. В нем находятся 5 точек. Проверяем результат с помощью калькулятора.

VLISP программа считывания данных из BMP-файла (монохромного)

Программа последовательно считывает из BMP-файла HEX-коды. По этим данным определяется порядковый номер каждой черной точки в ряду, начиная слева. Порядковые номера черных точек каждого ряда заносятся в список, который после окончании чтения ряда записывается в файл Result.txt.

Информация, записанная в файл Result.txt:

Описание программы

Из BMP-файла последовательно считываются байты с помощью функции read-char. Данные, которые будут использоваться в программе, запоминаются в переменных, остальные пропускаются.

Размер растра (xsize и ysize) определяется парой из 4-х байт. Как объединить эти 4 байта в одно число? Рассмотрим более простую задачу. Как из 4-х цифр «5» «8» «9» и «1» сформировать число 1985? Для этого каждую цифру сдвигаем влево на соответствующее количество разрядов (добавляем нули слева), а результат суммируем.

Аналогично решается задача формирования 4-х байтного числа. В пользовательской функции (r) из 4-х байтов сложением формируется одно число. Каждый байт перед сложением сдвигается на соответствующее количество разрядов (1, 2 и 3 байта). Сдвиг выполняется функцией Lsh, параметры сдвига указывается в битах (8, 16 и 24). Функция (r) возвращает число в 10-тичном представлении. Результат запоминается в переменных (xsize и ysize).

Далее считываются и обрабатываются точки, на предмет выявления их цвета. Используется внешний цикл по ysize и внутренний цикл по xsize.

Учитывая, что число байтов, которые описывают один ряд точек, кратно 4 объединим их по аналогии с предыдущей задачей. Только в этом случае из 4-х цифр «5» «8» «9» и «1» будем формировать число 5891:

Эту задачу в программе решает пользовательская функция (r). Она объединяет 4-х байта в 32 разрядное число, которое сохраняется в переменной n. В функции (r) также создается 32 разрядное число (сохраняется в переменной mask), первый бит которого – 1(единица), остальные – 0 (ноль). Начальное значение «маски» формируется путем побитового сдвига единицы влево на 31 разряд (lsh 1 31):

Читайте также:  Материал для мужского костюма синего цвета

Отметим, что любое число независимо от его представления (HEX, DEC, BIN) остается одним и тем же. А функции обрабатывают его по-разному. Например, функция read-char работает с байтами, а Lsh с битами.

После тестирования первого пиксела, единица в маске сдвигается вправо (lsh mask -1):

Тестирование каждой точки, которая описывается в переменной n, анализируется путем применения побитового умножения c значением переменной mask(if (= (logand n mask) 0) (setq lst (cons x lst))):

В верхнем примере проверялась крайняя 6-я точка сформированного числа, в нижнем примере – 19-я точка. Если результат побитового умножения ноль, то проверяемая точка – черная. Порядковый номер точки в ряду сохраняется в переменой x. Каждая черная точка заносится в начало списка (setq lst (cons x lst)). По окончании анализа ряда список записывается наоборот в файле результата result.txt (princ (reverse lst) fo).

Маска и число обновляются после 32 сдвигов (if (= mask 0) (m)), а также, в случае, если заканчивается внутренний цикл (repeat xsize…). При этом, лишние пиксели, которые находятся за пределами растра (64-50=14), автоматически отсекаются, поскольку в начале очередного цикла по Y (repeat ysize (m) …) значения переменных n и mask обновляются.

Формат BMP (24-bit Bitmap)

На рисунке приведен пример простого изображения (размер 34 *10 точек) из 3-х красных точек в левом нижнем углу, остальные точки белые.

Раскрываем листинг файла и, сопоставляя с изображением, определяем, как описываются данные в нем:

Файл начинается с символов “BM”, указывающих на формат файла.

С 19 позиции 4 байта (22 00 00 00) указывают размер файла по X (количество точек в строке 34), с 23-й позиции – 4 байта (0A 00 00 00) указывают размер файла по Y (количество рядов 10).

Начиная с 55-го байта и до конца файла содержатся данные о цвете точек растра – в порядке слева направо вдоль каждого ряда и снизу вверх по рядам. Одна точка описывается тремя байтами, каждый из которых представляет синюю (Blue), зеленую (Green) и красную (Red) составляющие цвета. В рассматриваемом примере первая точка (красного цвета) описана байтами (00 00 FF) вторая (белого цвета) – (FF FF FF).

Каждый ряд точек описывается количеством байт, кратным 4. Ряд из 34 точек должен описываться 34*3 + 2 =104 байтами. Два байта (00 00) добавляется в конце описания каждого ряда для обеспечения кратности 4. Если бы ряд состоял из 33 точек, то в конце каждого ряда добавилось по 1 байту для обеспечения кратности 4 (33*3 + 1 =100).

Загрузка и чтение BMP (24-bit Bitmap) на VB.NET

Ниже приводится модуль программы, который используется в приложении для идентификации продуктов (фруктов и овощей) на основе данных от видеокамеры. Модуль обеспечивает загрузку картинки и считывания точек (по 3 байта на каждую точку) из файла.

С++ программа считывания данных из BMP (24-bit Bitmap)

Ниже приводится модуль программы, который используется в приложении 3D-реконструкция по 2-м изображениям. Модуль обеспечивает загрузку данных из BMP файлов в динамически выделяемую оперативную память.

Формат Bmp (256-цветной)

За информационным заголовком следует таблица цветов, представляющая собой массив из 256 (по числу цветов) 4-байтовых полей. Каждое поле соответствует своему цвету в палитре, а три байта из четырех – компонентам синей, зеленой и красной составляющих для этого цвета. Последний, самый старший байт каждого поля зарезервирован и равен 0.

После таблицы цветов находятся данные изображения, которое по строкам растра записано снизу вверх, а внутри строки – слева направо. Так как на некоторых платформах невозможно считать единицу данных, которая меньше 4 байт, длина каждой строки выровнена на границу в 4 байта, т. е. при длине строки, некратной четырем, она дополняется нулями. Это обстоятельство обязательно надо учитывать при считывании файла.

На нижнем рисунке представлено точечное изображение (10*5) и конец листинга файла, где захвачены несколько полей из таблицы цветов и приводятся данные об изображении (обведены красной линией).

На рисунке выделены по 4 байта цветов палитры, которые используются для указания цвета точек. Белый цвет имеет последний номер в таблице цветов – 255 (FF). Синий цвет указан под номером 252 (FC), зеленый – 250 (FA), красный – 249 (F9). Длина каждой строки дополняется 2-я байтами (00 00) для кратности 4 (10+2=12).

Источник