powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите разобраться с одной структурой (чтение данных из BMP-файла)
28 сообщений из 28, показаны все 2 страниц
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33137823
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В мануале по формату BMP написанно, что файл начинается с двух структур.
Вот первая:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
typedef struct tagBITMAPFILEHEADER{
UINT bfType;
DWORD bfSize;
UINT bfReserved1;
UINT bfReserved2;
DWORD bfOffBits;
}
Вопрос в том, что за тип данных такой UINT. Я использую Линух и gcc. Соответственно windows.h использовать не могу. В мануале написанно что bfType содержит два символа B и M. Я пришёл к выводу что этот тип имеет длинну 2 байта. Но хочется убедится.
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33137860
Фотография VirusXP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
type UINT = LongWord;
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33137862
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unsigned int - 2 байта
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33137871
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinВ мануале по формату BMP написанно, что файл начинается с двух структур.
Вот первая:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
typedef struct tagBITMAPFILEHEADER{
UINT bfType;
DWORD bfSize;
UINT bfReserved1;
UINT bfReserved2;
DWORD bfOffBits;
}
Вопрос в том, что за тип данных такой UINT. Я использую Линух и gcc. Соответственно windows.h использовать не могу. В мануале написанно что bfType содержит два символа B и M. Я пришёл к выводу что этот тип имеет длинну 2 байта. Но хочется убедится.
Даю справку (выдержка из Windef.h):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
typedef unsigned long       DWORD;
typedef int                 BOOL;
typedef unsigned char       BYTE;
typedef unsigned short      WORD;
typedef float               FLOAT;
typedef FLOAT               *PFLOAT;
typedef BOOL near           *PBOOL;
typedef BOOL far            *LPBOOL;
typedef BYTE near           *PBYTE;
typedef BYTE far            *LPBYTE;
typedef int near            *PINT;
typedef int far             *LPINT;
typedef WORD near           *PWORD;
typedef WORD far            *LPWORD;
typedef long far            *LPLONG;
typedef DWORD near          *PDWORD;
typedef DWORD far           *LPDWORD;
typedef void far            *LPVOID;
typedef CONST void far      *LPCVOID;

typedef int                 INT;
typedef unsigned int        UINT;
typedef unsigned int        *PUINT;

/* Types use for passing & returning polymorphic values */
typedef UINT WPARAM;
typedef LONG LPARAM;
typedef LONG LRESULT;

...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33137878
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Землекопunsigned int - 2 байта
4 байта. это short 2 байта. Пардон
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33137890
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Землекопunsigned int - 2 байта
В DOSе был 1 байт, а вообще-то размер зависит от ОС (8 бит/16 бит/32 бит), компилятора и др...
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33137906
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C. Землекопunsigned int - 2 байта
В DOSе был 1 байт, а вообще-то размер зависит от ОС (8 бит/16 бит/32 бит), компилятора и др...
Конечно же, в DOSе был 2 байта...Sorry...
Та же ошибка, что и у Землекопа
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33137908
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Правда выдержка из win.h мне как мёртвому припарка. Я Си не настолько хорошо знаю.

Короче это - 2 байта, как я понял. Мне просто надо считать только bfOffBits. А мульки на проверку валидности картинки потом прижевлю.
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33137909
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinВ мануале по формату BMP написанно, что файл начинается с двух структур.
Вот первая:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
typedef struct tagBITMAPFILEHEADER{
UINT bfType;
DWORD bfSize;
UINT bfReserved1;
UINT bfReserved2;
DWORD bfOffBits;
}


Кстати, это неправильный заголовок. Должно быть

Код: plaintext
1.
2.
3.
4.
5.
6.
typedef struct tagBITMAPFILEHEADER { // bmfh 
    WORD    bfType; 
    DWORD   bfSize; 
    WORD    bfReserved1; 
    WORD    bfReserved2; 
    DWORD   bfOffBits; 
} BITMAPFILEHEADER; 
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33137928
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мануал - книжка, которая переведена на русский в '95ом году.

WORD - это будет short int, а DWORD - unsigned int?

ЗЫ: простите за ламерские вопросы.
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33137946
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinМануал - книжка, которая переведена на русский в '95ом году.

WORD - это будет short int, а DWORD - unsigned int?

ЗЫ: простите за ламерские вопросы.

См. мой пост выше:
typedef unsigned long DWORD;
typedef unsigned short WORD;

Т.е. Word=unsigned short int (ну, в этом случае int можно не писать ), а DWORD - в два раза длиннее - unsigned long...
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33137955
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinМануал - книжка, которая переведена на русский в '95ом году.

WORD - это будет short int, а DWORD - unsigned int?

ЗЫ: простите за ламерские вопросы.

Это, видимо, для Win16.

typedef unsigned short WORD; 2 байта
typedef unsigned long DWORD; 4
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138158
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C. Землекопunsigned int - 2 байта
В DOSе был 1 байт, а вообще-то размер зависит от ОС (8 бит/16 бит/32 бит), компилятора и др...

unsigned int в DOS никогда не был 1 байтом. int -ы все были 2 байта.
1 байт - это char был.
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138162
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нафига тебе в Linux BMP? Там и JPG есть.
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138180
MLeon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто к слову: насколько я помню, тип int определен в стандарте как длина слова, т.е. размер регистра процессора. После перехода на 4-байтовые все определения MS "поплыли".
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138217
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, мне когда понадобилось прочитать bmp
я взял far в нем нажал f3 потом f4 и увидел все что мне нужно.
правда bmp нужен был 24битный и только :-)
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138249
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivА нафига тебе в Linux BMP? Там и JPG есть.
Рассказываю что будет делать прога.

Есть график на миллиметровке. Построенный самописцем. Он сканится. Моя прога должна найти значение функции в точке. Я написал прогу на делфях. Она всё великолепно отделяет. Прога просто чудная вышла. Такой гордится можно. Вчера загрузил в неё гиговый файл. Пережевала с грехом пополам. Ну я подумал: "откуда у них гиговые файлы возьмутся? Короче всё круто. Можно к математике переходить.". Окозалось что гиговые у них действительно врядли будут. Файлы будут гигов по 5 минимум. Ну узнав это я пришёл к выводу что надо забыть про такие вкусности дельфы, как TImage и TCanvas. И что писать всё ручками надо. И что можно вообще в консоли. Раз в консоли и ручками то можно в Линухе и на Сях. Хоть я Си и плохо знаю. Заодно подучу. А потом пересобрать под Винду.
Почему BMP? Фо перфух потери JPEG'а не приемлимы. Во вторых BMP показался мне достаточно простым форматом.

Кстати, никто не кинет урлом где gcc виндовый скачать можно?

Вот что я родил тута. Соответствует ли такая структура структуре из мана:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
typedef struct bmpHeader { // bmfh 
    short int    bfType; 
    unsigned int   bfSize; 
    short int    bfReserved1; 
    short int    bfReserved2; 
    unsigned int   bfOffBits; 
} b;
?
Вот ещё вопрос: зачем я написал буковку b после объявления? Компилятор ругался (предупреждал). Я ещё раз взглянул на ман. Смотрю: а у них там буковки (ну не b, другие).
Я решил что это объявление переменной. Но обратится к элементу b.bfType не удалось. К b->bfType тож.
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138252
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin wrote:
> Ну я подумал: "откуда у них гиговые файлы возьмутся? Короче всё круто.
> Можно к математике переходить.". Окозалось что гиговые у них
> действительно врядли будут. Файлы будут гигов по 5 минимум.
это пять :-)
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138255
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.mingw.org/
пользуюсь уже года два
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138259
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_k
блин, мне когда понадобилось прочитать bmp
я взял far в нем нажал f3 потом f4 и увидел все что мне нужно.
правда bmp нужен был 24битный и только :-)
Posted via ActualForum NNTP Server 1.2
Ето раз. А два состоит в том что мне нужно знать ещё количество строк и столбцов. Это правда в следующей структуре будет.
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138265
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_k
Sarin wrote:
> Ну я подумал: "откуда у них гиговые файлы возьмутся? Короче всё круто.
> Можно к математике переходить.". Окозалось что гиговые у них
> действительно врядли будут. Файлы будут гигов по 5 минимум.
это пять :-)
Posted via ActualForum NNTP Server 1.2
Мне тож смешно стало

Вот сразу вопрос: а размер файла влияет на то, сколько временни проге надо чтоб дескриптор на него открыть?
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138268
MLeon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой полезный оператор sizeof
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138277
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin wrote:
> Вот сразу вопрос: а размер файла влияет на то, сколько временни проге
> надо чтоб дескриптор на него открыть?

думаю нет.
покрайней мере 7гиговый файл открывается мгновенно :-)
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138298
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin
Вот что я родил тута. Соответствует ли такая структура структуре из мана:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
typedef struct bmpHeader { // bmfh 
    short int    bfType; 
    unsigned int   bfSize; 
    short int    bfReserved1; 
    short int    bfReserved2; 
    unsigned int   bfOffBits; 
} b;
?
Вот ещё вопрос: зачем я написал буковку b после объявления? Компилятор ругался (предупреждал). Я ещё раз взглянул на ман. Смотрю: а у них там буковки (ну не b, другие).
Я решил что это объявление переменной. Но обратится к элементу b.bfType не удалось. К b->bfType тож.

Это объявление нового типа данных, а не переменной. Теперь можно объявить
Код: plaintext
b myBmpHeader;
и обращаться myBmpHeader.bfSize или указатель b *pmyBmpHeader; соотвественно pmyBmpHeader->bfSize
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138325
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно. А зачем тогда struct bmpHeader? Я переменную такого типа создал и работает.
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138371
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinПонятно. А зачем тогда struct bmpHeader? Я переменную такого типа создал и работает.
Ну, ты, блин, даешь! Это то же самое, что спросить:" А зачем нам металлические 10 рублей, когда есть бумажные 10 рублей?". Кому-то так удобнее, кому-то иначе...
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138376
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinПонятно. А зачем тогда struct bmpHeader? Я переменную такого типа создал и работает.

на любителя теперь есть варианты объявления переменной типа данная структура:

Код: plaintext
struct bmpHeader Header
или
Код: plaintext
b Header
, которые эквивалентны, но второй короче.
...
Рейтинг: 0 / 0
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
    #33138383
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно. Спасибо.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите разобраться с одной структурой (чтение данных из BMP-файла)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]