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

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

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

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

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

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

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

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

Задача про рюкзак - ускорить работу программы - C++
Вообщем есть алгоритм, который работает правильно за O(N*W), поэтому при больших значениях будет очень долго считать, нужно изменить так,...

Где почитать про работу сcom портами - C++
Доброе время суток. Объясните пожалуйста как и где почитать про работу с COM портами. Необходимо считывать данные с прибора по протоколу rs...

Создание бмп файла - C++
У меня есть массив 224x224 , и нужно массив записать в бмп файл (изображение черно-белое)

Считывание бмп файла - C++
хочу считать бмп файл размер 225x225 в массив чисел , изображение черно белое и когда делаю вывод массива на экран вылазиют слишком...

Считать палитру бмп файла - C++
Помогите мне нужно считать палитру бмп файла, файл черно-белый 8 бит на пиксель 256 цветов я сделал но у меня числа получаются типо...

структура бмп-фаила. Не могу разобраться - C++
Здравствуйте! Пытаюсь разобраться с форматом BMP, но возникла одна "непонятка". Заголовок BMP файла составляет 14 байт, в последних...

10
Croessmah
Эксперт CЭксперт С++
13416 / 7569 / 855
Регистрация: 27.09.2012
Сообщений: 18,632
Записей в блоге: 3
Завершенные тесты: 1
19.01.2013, 01:55 #2
Формат данных BMP (bitmap)
1
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
19.01.2013, 02:01 #3
ширина - 4ре байта, начиная с 18го (начальный байт считается нулевым)
размер - 4ре байта, начиная с 2го (начальный байт считается нулевым)
http://en.wikipedia.org/wiki/BMP_file_format
1
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 редактор открывай и переводи всё... не ужели никто не научит считать?)
0
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,797
Записей в блоге: 17
19.01.2013, 02:51 #5
БМП - боевая машина пехоты... скрытый намек для студента
1
contravatar
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 5
19.01.2013, 02:58  [ТС] #6
спасибо,вы по теме я смотрю.
0
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,797
Записей в блоге: 17
19.01.2013, 03:05 #7
Цитата Сообщение от contravatar Посмотреть сообщение
не ужели никто не научит считать?)
В школе не научили ?

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

Можно подумать без вас я не вылазил и не читал.
0
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,797
Записей в блоге: 17
19.01.2013, 03:09 #9
Цитата Сообщение от contravatar Посмотреть сообщение
Можно подумать без вас я не вылазил и не читал.
Мы так именно и подумали... ( по крайней мере я)
0
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
0
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,797
Записей в блоге: 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.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2013, 03:14
Привет! Вот еще темы с ответами:

написать код для создания бмп файла заданного размера си++ - C++
как написать код для создания бмп файла,размеры задаем сами.в последующем применяем для его масштабирования

Про линковку библиотек и про архитектуру иерархии классов - C++
Добрый день! Возникла такая вот проблема. Я использую MinGW Developer Studio. Это довольно старая IDE, поддержка которой завершилась в 2005...

Про линковку и про исключения - C++
1) class method definition - если его поместить в объявлении класса в файле заголовке и включить заголовок в несколько компилируемых cpp, а...

1.про функция exit(); 2.про this - C++
1.Где находиться функция exit(1); А то в одних програмах подключають <stdlib.h>//для функции exit В других: <process.h>//для...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
19.01.2013, 03:14
Ответ Создать тему
Опции темы

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