OSDev http://osdev.su/ |
|
Вывод изображения bmp http://osdev.su/viewtopic.php?f=6&t=1886 |
Страница 2 из 2 |
Автор: | grenders22 [ 14 мар 2018, 17:58 ] |
Заголовок сообщения: | Re: Вывод изображения bmp |
pavia писал(а): BMP простой формат там заголовок и массив пикселей. Вам ещё потребуется на всякий случай конвертер 24 в 32 бита. Все равно не понимаю как выудить из массива байт пиксели, можете пример привести? |
Автор: | pavia [ 14 мар 2018, 20:51 ] |
Заголовок сообщения: | Re: Вывод изображения bmp |
Как-то так: Код: 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, так что проверяйте. |
Автор: | grenders22 [ 14 мар 2018, 22:49 ] |
Заголовок сообщения: | Re: Вывод изображения bmp |
Пытаюсь модифицировать, но у меня фреймбуфер иначе устроен, как мне 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 }; как вообще из этого выудить пиксели, чтото не так да? |
Автор: | Himik [ 15 мар 2018, 19:35 ] |
Заголовок сообщения: | Re: Вывод изображения bmp |
Тут формат BMP разбирать надо. Они тоже бывают с разным размером пикселя. Когда будешь создавать рисунок в граф. редакторе, выбирай формат с 32 битным цветом, чтобы не пришлось перекодировать пиксели при копировании на экран. |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |