Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертировать BMP в 8 битный формат RRRGGGBB, Чтобы загрузить в контроллер дисплея 
V
    Опции темы
mr_smit
  Дата 7.1.2011, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: нет
Всего: 4



Прошу помощи. Чего то я запутался. Итак. Есть дисплей от телефона Siemens S65, подключенный к контроллеру ATMega8. Дисплей цветной, 176х132 пикселей. Отображает 65536 цветов, 16 бит (по 2 байта на пиксель). Работает в режиме цветопередачи R5G6B5.

Есть процедура конвертации изображения в формат R5G6B5:
Код

var
r1,g1,b1:integer;
s,ss:String;
pix:TColor;
...
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
...
  for i:=0 to Image1.Picture.Height-1 do
    begin
      for k:=0 to Image1.Picture.Width-1 do
        begin
          // т.е. с каждым пикселем проделываем следующее:
          pix:= Image1.Canvas.Pixels[k,Image1.Picture.Height-1-i];
          r1:=GetRValue(pix) shr 3;
          g1:=GetGValue(pix) shr 2;
          b1:=GetBValue(pix) shr 3;
          pix:= (r1 shl 11) + (g1 shl 5) + b1;
            ss:= ss + '0x'+IntToHex(pix,4)+', ';
            ...
        end;
    end;
...

В результате получаем текстовый файл примерно такого содержания: "0xF800, 0x07E0, 0x001F, 0x0000, 0xFFFF". Дальше я это просто вставляю в прошивку контроллера, компилирую. Всё цвета прекрасно выводятся на дисплей.

Красный: 0xF800
Зеленый: 0x07E0
Синий: 0x001F
Черный: 0x0000
Белый: 0xFFFF

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

Как мне изменить процедуру конвертации чтобы получить 8 битный цвет (я так понимаю чтобы было что то типа такого: "0хАА, 0х02, 0хFF").
PM MAIL   Вверх
mr_smit
Дата 8.1.2011, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: нет
Всего: 4



Ответ:
Код

r1:=GetRValue(pix) shr 5;
g1:=GetGValue(pix) shr 5;
b1:=GetBValue(pix) shr 6;
pix:= (r1 shl 5) + (g1 shl 2) + b1;


Вопрос снимается.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.