Bmp: 24bit => 16bit
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [18.97.9.174] |
|
|
правила раздела Алгоритмы

Bmp: 24bit => 16bit
|
Сообщ.
#1
,
|
|
|
|
Не знаю куда надо было поместить этот вопрос, но так как раздел называется "Алгоритмы" то задам его таким образом: когда мы преобразуем bmp-файл в файл меньшей разрядности то по какому принципу сокращаются цвета в нем. То есть, грубо говоря, при 24 разрядах R,G,B=0...255 а в 16 разрядах R,B=0...31, G=0...63. Естесствено, что в таком случае у каждого образа из (bmp16) есть несколько прообразов из (bmp24) так вот хотелось бы знать по каким правилам осуществляется эта связь.
ЗЫ. На самом деле я хотел сначала спросить не знаете ли вы какую-нить готовую программку-конвертор, но так как сам ничего не нашел, подумал, что придется писать самому. Но если вы все же знаете, напишите плиз, это вообще будет круто. |
|
Сообщ.
#2
,
|
|
|
|
Технически, ето делается отбрасыванием трех младших битов от каналов R и B и двух младших от канала G.
Амплитуды каналов RGB тем самым просто делятся на 8, 4 и 8 сответственно. |
|
Сообщ.
#3
,
|
|
|
|
а разве там не палитра??
|
|
Сообщ.
#4
,
|
|
|
|
Насколько я понимаю, 16 и 24 битные бмпешки беспалитровый формат, в отличии от 1,4 и 8 разрядных...
|
|
Сообщ.
#5
,
|
|
|
|
bmp 16 бит не существует.. по крайней мере, он не поддерживается виндой.
|
|
Сообщ.
#6
,
|
|
|
|
>Ralf
http://www.delphimaster.ru/articles/pixels/index.html 24 в 16 преобразуется однозначно, сдвигом каждой составляющей r,g,b А 16 в 24 - составляющие масштабируется так, чтобы макс. значение (31 для R,B, 63 для G) переходило в 255. По крайней мере, WinAPI-функции делают именно так, и это поведение смоделировано в статье. |
|
Сообщ.
#7
,
|
|
|
|
Цитата PropellerMan, 25.09.03, 22:31:51 bmp 16 бит не существует.. по крайней мере, он не поддерживается виндой. 1. Существует (я в своё время проспорил;). 2. Поддерживается. А вот фотошоп не умеет его открывать, и тем более сохранять;) Палитры в нём никакой, конечно-же нет. 16bit бывает двух видов: 5-5-5 (один бит теряем) и 5-6-5 (6 бит зелёному цвету, т.к. он имеет наибольшую яркость, а яркостная информация приоритетна). Обычно юзают второй вариант. Соответственно, конверсии: #define TRUE2HI(rgb) ((HICOLOR)((((rgb)&0xF80000)>>19)|(((rgb)&0xFC00)>>5)|(((rgb)&0xF8)<<8))) #define HI2TRUE(col) ((((col)&0xF800)>>8)|(((col)&0x07E0)<<5)|(((col)&0x001F)<<19)) TRUE - это dword, с RGB значением, HI (HICOLOR) - word, с 5-6-5 RGB значением. |