Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите разобраться с одной структурой (чтение данных из BMP-файла) / 25 сообщений из 28, страница 1 из 2
28.06.2005, 11:51
    #33137823
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
В мануале по формату 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
28.06.2005, 11:58
    #33137860
VirusXP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
type UINT = LongWord;
...
Рейтинг: 0 / 0
28.06.2005, 11:58
    #33137862
Землекоп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
unsigned int - 2 байта
...
Рейтинг: 0 / 0
28.06.2005, 12:01
    #33137871
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
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
28.06.2005, 12:02
    #33137878
Землекоп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
Землекопunsigned int - 2 байта
4 байта. это short 2 байта. Пардон
...
Рейтинг: 0 / 0
28.06.2005, 12:05
    #33137890
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
Землекопunsigned int - 2 байта
В DOSе был 1 байт, а вообще-то размер зависит от ОС (8 бит/16 бит/32 бит), компилятора и др...
...
Рейтинг: 0 / 0
28.06.2005, 12:08
    #33137906
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
Станислав C. Землекопunsigned int - 2 байта
В DOSе был 1 байт, а вообще-то размер зависит от ОС (8 бит/16 бит/32 бит), компилятора и др...
Конечно же, в DOSе был 2 байта...Sorry...
Та же ошибка, что и у Землекопа
...
Рейтинг: 0 / 0
28.06.2005, 12:09
    #33137908
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
Спасибо. Правда выдержка из win.h мне как мёртвому припарка. Я Си не настолько хорошо знаю.

Короче это - 2 байта, как я понял. Мне просто надо считать только bfOffBits. А мульки на проверку валидности картинки потом прижевлю.
...
Рейтинг: 0 / 0
28.06.2005, 12:09
    #33137909
Землекоп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
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
28.06.2005, 12:12
    #33137928
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
Мануал - книжка, которая переведена на русский в '95ом году.

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

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

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

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

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

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

unsigned int в DOS никогда не был 1 байтом. int -ы все были 2 байта.
1 байт - это char был.
...
Рейтинг: 0 / 0
28.06.2005, 13:08
    #33138162
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
А нафига тебе в Linux BMP? Там и JPG есть.
...
Рейтинг: 0 / 0
28.06.2005, 13:13
    #33138180
MLeon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
Просто к слову: насколько я помню, тип int определен в стандарте как длина слова, т.е. размер регистра процессора. После перехода на 4-байтовые все определения MS "поплыли".
...
Рейтинг: 0 / 0
28.06.2005, 13:20
    #33138217
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
блин, мне когда понадобилось прочитать bmp
я взял far в нем нажал f3 потом f4 и увидел все что мне нужно.
правда bmp нужен был 24битный и только :-)
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
28.06.2005, 13:29
    #33138249
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
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
28.06.2005, 13:30
    #33138252
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
Sarin wrote:
> Ну я подумал: "откуда у них гиговые файлы возьмутся? Короче всё круто.
> Можно к математике переходить.". Окозалось что гиговые у них
> действительно врядли будут. Файлы будут гигов по 5 минимум.
это пять :-)
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
28.06.2005, 13:31
    #33138255
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
http://www.mingw.org/
пользуюсь уже года два
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
28.06.2005, 13:31
    #33138259
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
alex_k
блин, мне когда понадобилось прочитать bmp
я взял far в нем нажал f3 потом f4 и увидел все что мне нужно.
правда bmp нужен был 24битный и только :-)
Posted via ActualForum NNTP Server 1.2
Ето раз. А два состоит в том что мне нужно знать ещё количество строк и столбцов. Это правда в следующей структуре будет.
...
Рейтинг: 0 / 0
28.06.2005, 13:34
    #33138265
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
alex_k
Sarin wrote:
> Ну я подумал: "откуда у них гиговые файлы возьмутся? Короче всё круто.
> Можно к математике переходить.". Окозалось что гиговые у них
> действительно врядли будут. Файлы будут гигов по 5 минимум.
это пять :-)
Posted via ActualForum NNTP Server 1.2
Мне тож смешно стало

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

думаю нет.
покрайней мере 7гиговый файл открывается мгновенно :-)
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
28.06.2005, 13:42
    #33138298
Землекоп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
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
28.06.2005, 13:50
    #33138325
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с одной структурой (чтение данных из BMP-файла)
Понятно. А зачем тогда struct bmpHeader? Я переменную такого типа создал и работает.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите разобраться с одной структурой (чтение данных из BMP-файла) / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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