На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Bmp: 24bit => 16bit
    Не знаю куда надо было поместить этот вопрос, но так как раздел называется "Алгоритмы" то задам его таким образом: когда мы преобразуем bmp-файл в файл меньшей разрядности то по какому принципу сокращаются цвета в нем. То есть, грубо говоря, при 24 разрядах R,G,B=0...255 а в 16 разрядах R,B=0...31, G=0...63. Естесствено, что в таком случае у каждого образа из (bmp16) есть несколько прообразов из (bmp24) так вот хотелось бы знать по каким правилам осуществляется эта связь.

    ЗЫ. На самом деле я хотел сначала спросить не знаете ли вы какую-нить готовую программку-конвертор, но так как сам ничего не нашел, подумал, что придется писать самому. Но если вы все же знаете, напишите плиз, это вообще будет круто.  
      Технически, ето делается отбрасыванием трех младших битов от каналов R и B и двух младших от канала G.

      Амплитуды каналов RGB тем самым просто делятся на 8, 4 и 8 сответственно.
        а разве там не палитра??
          Насколько я понимаю, 16 и 24 битные бмпешки беспалитровый формат, в отличии от 1,4 и 8 разрядных...
            bmp 16 бит не существует.. по крайней мере, он не поддерживается виндой.
              >Ralf
              http://www.delphimaster.ru/articles/pixels/index.html
              24 в 16 преобразуется однозначно, сдвигом каждой составляющей r,g,b
              А 16 в 24 - составляющие масштабируется так, чтобы макс. значение (31 для R,B, 63 для G) переходило в 255. По крайней мере, WinAPI-функции делают именно так, и это поведение смоделировано в статье.
                Цитата 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 значением.
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0.0923 ]   [ 15 queries used ]   [ Generated: 5.10.26, 23:45 GMT ]