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

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

Восстановить пароль Регистрация
 
contravatar
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 5
19.01.2013, 01:51     Про работу с БМП #1
Добрая ночь,уважаемые форумчане.

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

Так вот сам вопрос: как посчитать байт где мы узнаем ширину и размер файла?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2013, 01:51     Про работу с БМП
Посмотрите здесь:

1.про функция exit(); 2.про this C++
C++ структура бмп-фаила. Не могу разобраться
Считывание бмп файла C++
C++ Считать палитру бмп файла
C++ Создание бмп файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11840 / 6819 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
19.01.2013, 01:55     Про работу с БМП #2
Формат данных BMP (bitmap)
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,617
Записей в блоге: 17
19.01.2013, 02:51     Про работу с БМП #5
БМП - боевая машина пехоты... скрытый намек для студента
contravatar
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 5
19.01.2013, 02:58  [ТС]     Про работу с БМП #6
спасибо,вы по теме я смотрю.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,617
Записей в блоге: 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
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,617
Записей в блоге: 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++

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,617
Записей в блоге: 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     Про работу с БМП
Ответ Создать тему
Опции темы

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