OSDev

для всех
Текущее время: 28 мар 2024, 15:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Вывод изображения bmp
СообщениеДобавлено: 14 мар 2018, 17:58 

Зарегистрирован: 04 мар 2018, 21:34
Сообщения: 55
pavia писал(а):
BMP простой формат там заголовок и массив пикселей. Вам ещё потребуется на всякий случай конвертер 24 в 32 бита.


Все равно не понимаю как выудить из массива байт пиксели, можете пример привести?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод изображения bmp
СообщениеДобавлено: 14 мар 2018, 20:51 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Как-то так:
Код:
struct bgra {
   uint8_t b, g, r, a;
};


static const uint8_t[] bmpFile = {0x00, 0x00, ....}; // Массив констант

void drawBmp(void* ptrBmpFile; void* ptrScreen)
{
// Вычисляем адрес секции data
//data=ptrBmpFile+sizeof(TBmpFileHead)+sizeOf(TBmpInfo)
struct bgra* src=ptrBmpFile+14+40;
struct bgra* dst=screen;

for(int i=0;i++; i<764)
  for(int j=0;j++; j<1024)
{
  *dst=*src; // Распаковываем указатели тем самым получаем значения пикселей и просто присваиваем исходный в целевой, из bmp в LFB.
  dst=dst+4;
  src=src+4;
/* Аналогично
  *dst.r=*src.r;
  *dst.g=*src.g;
  *dst.b=*src.b;
*/
}
}

drawBmp(&bmpFile, (void*)(ctx->framebuffer_addr)); //Получаем указатель на массив констант Bmp-файла, а адрес LFB преобразовываем так же в указатель.


У меня вообще ос на Delphi, так что проверяйте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод изображения bmp
СообщениеДобавлено: 14 мар 2018, 22:49 

Зарегистрирован: 04 мар 2018, 21:34
Сообщения: 55
Пытаюсь модифицировать, но у меня фреймбуфер иначе устроен, как мне src->r, src->g, src->b переделать в uint32_t? Каждый из них uint8_t?

Код:
uint8_t bmpFile[34] = {
    0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2f, 0x6d, 0x61, 0x6b, 0x73, 0x2f, 0xd0,
    0x97, 0xd0, 0xb0, 0xd0, 0xb3, 0xd1, 0x80, 0xd1, 0x83, 0xd0, 0xb7, 0xd0,
    0xba, 0xd0, 0xb8, 0x2f, 0x31, 0x2e, 0x62, 0x6d, 0x70, 0x0a
};


как вообще из этого выудить пиксели, чтото не так да?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод изображения bmp
СообщениеДобавлено: 15 мар 2018, 19:35 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Тут формат BMP разбирать надо. Они тоже бывают с разным размером пикселя. Когда будешь создавать рисунок в граф. редакторе, выбирай формат с 32 битным цветом, чтобы не пришлось перекодировать пиксели при копировании на экран.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB