![]() |
|
![]() ![]() ![]() |
|
R71MT |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 28.7.2015 Репутация: нет Всего: 1 |
Привет всем! Помогите разобраться с таким вопросом..
Пытаюсь вывести 24-разрядный BMP-рисунок в окно программы. Приложение долно работать в реальном режиме под DOS. Код пишу на FASM'е, но споткнулся о формат BMP-файла, в доках которого говорится, что каждый пиксель описывается тремя байтами(RGB). Я создал в фотошопе рисунок 3х3 пикселя, каждый пиксель залил по-вертикали цветами B-G-R, и открыв получившийся BMP в HEX-редакторе увидел такую картину:
Первые 35h байт занимает заголовок, а сам рисунок начинается в адреса 36h. Размер файла лежит в слове по адресу 02h (у меня 5Сh = 92 байта). В свойствах файла так-же 92 байта. Теперь вопрос.. Если размер файла 92, а заголовок занимает 54 байта, то выходит что полезной инфы в нём 92-54=38 байт. Рисунок у меня 3х3=9 точки, каждая из которых описывается 3-мя байтами, получается 27 байт. От куда ещё 11 байт? Вот картинка, начиная с адреса 36h (без заголовка), ..только полезная инфа:
Цвета RGB определились, а болото нулей в хвостах строк - непонятно что! Дело в том, что разобравшись со-структурой BMP, мне нужно будет перекодировать его в 16-цветный рисунок и вывести на экран в видео/режиме 12h (640x480x16). C этим проблем нет: 4 бита, 3 из которых - цвета, а старший яркость. Проверка на 1, со сдвигами вправо каждого байта. Но как быть в самой картинкой? Или при перекодировки нужно пропускать 3 байта в хвосте? Подскажите, где я туплю.. |
||||
|
|||||
_zorn_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
||||
|
||||
R71MT |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 28.7.2015 Репутация: нет Всего: 1 |
_zorn_, спасибо!
Оказывается это выравнивание по-параграфу. Если ширина картинки не кратна 4, то оставшиеся байты забиваются нулями (от 1 до 3). Я попробовал сделать картинку в 4х4 пикселя и нули в конце пропали:
Теперь вожусь с перекодировкой из 24-разрядного BMP в 4-битную палитру. Вроде получается... Хотя ХЗ какой будет результат. |
|||
|
||||
_zorn_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
"Для себя" пойдёт, но больше это никому не нужно
![]() |
|||
|
||||
R71MT |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 28.7.2015 Репутация: нет Всего: 1 |
..ну да - это чисто в целях самообразования.
Делаю boot-cd и прицеплю туда лого. |
|||
|
||||
R71MT |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 28.7.2015 Репутация: нет Всего: 1 |
..подскажите, что не так в коде?
Вроде что-то выводит, но ни как не нужную картинку. Размер картинки пока фиксированный - 64х64 пикселей. Вес - 2000h байт: Код:
Это сообщение отредактировал(а) R71MT - 3.8.2015, 18:16 |
|||
|
||||
R71MT |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 28.7.2015 Репутация: нет Всего: 1 |
Сорри! Всё оказывается работает.. Просто я пытался вывести 8-разрядный рисунок BMP, а нужен 24-разрядный
Это сообщение отредактировал(а) R71MT - 4.8.2015, 16:13 |
|||
|
||||
_zorn_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
У 8 разрядного индекса цвета ) Типа как в гифе.
|
|||
|
||||
R71MT |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 28.7.2015 Репутация: нет Всего: 1 |
..в итоге, написал отдельно перекодировщик, и подключаю уже 16-цветный рисунок в исходник инструкцией "FILE".. Всё работает...
|
|||
|
||||
_zorn_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
А я когда то звёзды рисовал мигающие на паскале поверх планеты, сконверченной из интернета скачаной картинки в 16 бит )
Ностальжи ) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для Windows/DOS" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для Windows/Dos | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |