Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
contravatar
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 5
#1

Про работу с БМП - C++

19.01.2013, 01:51. Просмотров 466. Ответов 10
Метки нет (Все метки)

Добрая ночь,уважаемые форумчане.

На днях преподователь смог меня запутать на глупом вопросе,надеюсь здесь найдутся люди которые смогут доходчиво мне объяснить,этот вопрос.

Так вот сам вопрос: как посчитать байт где мы узнаем ширину и размер файла?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12520 / 7082 / 797
Регистрация: 27.09.2012
Сообщений: 17,489
Записей в блоге: 2
Завершенные тесты: 1
19.01.2013, 01:55     Про работу с БМП #2
Формат данных BMP (bitmap)
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
19.01.2013, 02:01     Про работу с БМП #3
ширина - 4ре байта, начиная с 18го (начальный байт считается нулевым)
размер - 4ре байта, начиная с 2го (начальный байт считается нулевым)
http://en.wikipedia.org/wiki/BMP_file_format
contravatar
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 5
19.01.2013, 02:49  [ТС]     Про работу с БМП #4
т.е. с 18 до 26 байта у нас хранятся длина и ширина?

Добавлено через 59 секунд
А понял с 18 по 22, спасибо щас прочитаю материал.

Добавлено через 38 минут
Kuzia domovenok, не совсем понял,как вы посчитали... но это правильно исходя из части кода преподователя по считыванию bmp файла

Добавлено через 1 минуту
Offset Size Purpose
0Eh 4 the size of this header (12 bytes)
12h 2 the bitmap width in pixels.
14h 2 the bitmap height in pixels.
16h 2 the number of color planes; 1 is the only legal value
18h 2 the number of bits per pixel. Typical values are 1, 4, 8 and 24.

ведь 12 смещение ширина

Добавлено через 4 минуты
Блин хоть hex редактор открывай и переводи всё... не ужели никто не научит считать?)
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,916
Записей в блоге: 17
19.01.2013, 02:51     Про работу с БМП #5
БМП - боевая машина пехоты... скрытый намек для студента
contravatar
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 5
19.01.2013, 02:58  [ТС]     Про работу с БМП #6
спасибо,вы по теме я смотрю.
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,916
Записей в блоге: 17
19.01.2013, 03:05     Про работу с БМП #7
Цитата Сообщение от contravatar Посмотреть сообщение
не ужели никто не научит считать?)
В школе не научили ?

На русском http://ru.wikipedia.org/wiki/BMP
contravatar
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 5
19.01.2013, 03:08  [ТС]     Про работу с БМП #8
Ну вы молодцы,я это понял.Что гуглить только и горазды... а пояснить почему 18 байт не в состоянии.

Можно подумать без вас я не вылазил и не читал.
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,916
Записей в блоге: 17
19.01.2013, 03:09     Про работу с БМП #9
Цитата Сообщение от contravatar Посмотреть сообщение
Можно подумать без вас я не вылазил и не читал.
Мы так именно и подумали... ( по крайней мере я)
contravatar
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 5
19.01.2013, 03:14  [ТС]     Про работу с БМП #10
Спасибо разобрался, для тех кто набредет на тему и будет искать ответ. У каждого расширения битмап свой заголовок внутри файла. О том как задан этот заголовок вы гуглите.

BMP-файл состоит из четырёх частей:
Заголовок файла (BITMAPFILEHEADER)
Заголовок изображения (BITMAPINFOHEADER, может отсутствовать). BITMAPV4HEADER (Win95, NT4.0) BITMAPV5HEADER (Win98/Me, 2000/XP)
Палитра (может отсутствовать)


В моем случае помогло следующее.

http://en.wikipedia.org/wiki/BMP_fil...ap_file_header

в гугле ищем заголовки файла bitmap

http://c-site.h1.ru/infa/bmp_struct.htm
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2013, 03:14     Про работу с БМП
Еще ссылки по теме:

написать код для создания бмп файла заданного размера си++ C++
Где почитать про работу сcom портами C++
Переделать работу с текстовыми файлами под работу с двоичными файлами C++
Задача про рюкзак - ускорить работу программы C++
Про линковку библиотек и про архитектуру иерархии классов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,916
Записей в блоге: 17
19.01.2013, 03:14     Про работу с БМП #11
C++
1
2
3
4
5
6
7
8
typedef struct tagBITMAPFILEHEADER 
{ 
  WORD    bfType;        // смещение 0 байт от начала файла
  DWORD   bfSize;        // смещение 2 байта от начала файла, длина 4 байта
  WORD    bfReserved1; 
  WORD    bfReserved2; 
  DWORD   bfOffBits;     // смещение 10 байт от начала файла, длина 4 байта
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
Размер 14 байт.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
typedef struct tagBITMAPINFOHEADER{
  DWORD  biSize; 
  LONG   biWidth; 
  LONG   biHeight; 
  WORD   biPlanes; 
  WORD   biBitCount; 
  DWORD  biCompression; 
  DWORD  biSizeImage; 
  LONG   biXPelsPerMeter; 
  LONG   biYPelsPerMeter; 
  DWORD  biClrUsed; 
  DWORD  biClrImportant; 
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
Цитата Сообщение от Wiki
Тип WORD должен иметь размер 16 бит, типы DWORD и LONG — 32 бита, тип LONG — знаковый, порядок байтов подразумевается little endian.
Yandex
Объявления
19.01.2013, 03:14     Про работу с БМП
Ответ Создать тему
Опции темы

Текущее время: 08:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru