![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| somwan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.11.2007 Репутация: нет Всего: нет |
Желаю здравствовать !
Программирование для меня это хобби.Работаю в среде Borland C++ 3.1.( Пробовал Borland C++ Builder.Много полезного но и много сложного для меня )Сейчас бьюсь над проблемой чтения bmp-картинки с жосткого диска средствами самого BC 3.1.Без подключения дополнительных библиоте.Уже узнал много интересных вещей про bmp Но до сих пор немогу правильно считать заголовок файла.А именно размер,ширену в точках,высоту в точках.При этом метка BM считывается правильно а так-же количество бит на точку,количество плоскостей.Открываю фаил при помощи функции open("C:\\xxx.bmp ",ios::in) устанавливаю на позицию seekg(x),и считываю в unsigned char 4байта (ширина рисунка в точках)Реальная ширина 468 а у меня получается 2121.Может у кого есть код по данному вапросу(только без наваротов,попроще.а то я его год расшифрововать буду)Сейчас нет возможности выложить код моей программы(он на другом компе)но чуть позже выложу.Спасибо. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
эта проблема решается созданием структуры, описывающей каждое поле заголовока, и чтением напрямую в нее минуя unsigned char'ы.
А потом, ты считываешь в unsigned char data или в массив unsigned char array[4]? |
|||
|
||||
| DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
Не порть себе впечатление о языке! Возьми нормальный компилятор, он уже дцать лет не поддерживает стандарта, на нем ты не сможешь реализовать многих вещей! Офттоп, конечно. -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
| somwan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.11.2007 Репутация: нет Всего: нет |
Вот программа с помощью которой я пытаюсь прочитать строку информации из bmp.А с тем что BC 3.1 устарел уже давно я согласен,но всё-же хотелось бы решить этот вапрос в данной среде.
#include<fstream.h> #include<conio.h> #include<stdio.h> main() { clrscr(); unsigned long char vg_ch,m1[4]={000}; unsigned long int vg_i; int a=0,a_1=0; ifstream file1; file1.open("c:\\baza01.bmp",ios::in); for(a=0;a<2;a++) //metka BM { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("metka BM "); for(a=0;a<2;a++) printf("%c",m1[a]); printf("\n"); a_1=0; //---------------------------------------------------------------- for(a=2;a<6;a++) // razmer v baytax { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("razmer v baytax "); for(a=0;a<4;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=6;a<8;a++) // rezerv 1 { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("rezerv 1 "); for(a=0;a<2;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=8;a<10;a++) // rezerv 2 { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("rezerv 2 "); for(a=0;a<2;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=10;a<14;a++) //smechenie obl.dannix { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("smechenie obl.dannix "); for(a=0;a<4;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=14;a<18;a++) //razmer obl.informacii { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("razmer obl.informacii "); for(a=0;a<4;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=18;a<22;a++) //chirina v tochkax { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("chirina v tochkax "); for(a=0;a<4;a++) printf("%x ",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=22;a<26;a++) //visota v tochkax { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("visota v tochkax "); for(a=0;a<4;a++) printf("%x ",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=26;a<28;a++) //kol-vo ploskostey { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("kol-vo ploskostey "); for(a=0;a<2;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=28;a<30;a++) //kol-vo bit na tochky { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("kol-vo bit na tochky "); for(a=0;a<2;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=30;a<34;a++) //tip sgatiy { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("tip sgatiy "); for(a=0;a<4;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=34;a<38;a++) //razmer dannix v baytax { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("razmer dannix v baytax "); for(a=0;a<4;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=38;a<42;a++) //kol-vo tochek na metr { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("kol-vo tochek na metr "); for(a=0;a<4;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=42;a<46;a++) //kol-vo tochek na metr { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("kol-vo tochek na metr "); for(a=0;a<4;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=46;a<50;a++) //kol-vo cvetov { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("kol-vo cvetov "); for(a=0;a<4;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- for(a=50;a<54;a++) //kol-vo cvetov v politre { file1.seekg(a); file1 >> vg_ch; m1[a_1]=vg_ch; a_1++; } printf("kol-vo cvetov v politre "); for(a=0;a<4;a++) printf("%i",m1[a]); printf("\n"); a_1=0; //----------------------------------------------------------------- printf(" OK "); getch(); }ограмма |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
somwan,
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Идем в гугл: набираем "bmp структура заголовка" и заходим на страницу из Википедии. После этого делаем copy-paste для всех необходимых структур и читаем в них из файла одной операцией read (по одному read на структуру). Свой код распечатай и повесь в рамку с надписью большими красными буквами: "ТАК ПИСАТЬ НЕЛЬЗЯ". имхо. |
|||
|
||||
| somwan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.11.2007 Репутация: нет Всего: нет |
Спасибо за совет.Посетил страницу из Википедии действительно много интересной информации.Буду разбераться.Что касается стиля написания то пишу как умею.Я и не скрываю что ЧАЙНИК Я.Для этого и спрашиваю чтоб научиться.Стыдно не незнать,а неучиться.А я только учусь.
|
|||
|
||||
| Sentrashi |
|
||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 22.11.2007 Где: Ёбург Репутация: нет Всего: нет |
Всем доброго времени суток ;)......
на счет
да устарел (причем энто мягко сказано), но у вы в наших институтах до сих пор его использую, да и изначально предпочитают "изучить" С, а затем С++, Вот и сидим под BC3.1 под досом извращаемся, увы деваться некуда «Учебная программа такая» но перейдем к теме: учусь на втором курсе ну и выбрал себе курсовой часы с будильником. Часы вроде бы сделал, получилось не много убого но работает и время показывает исправно непосредственно код самих часов (осталось довести до ума часовую и минутную стрелки, пока что выполнены в виде линий ну и подправить просчет даты при вводе времени вручную)
коды открытия bmp-шного файлика (соответственно 640x480, 16 цветов) ВАРИАНТ ПЕРВЫЙ (писал не я, пока что разбираюсь)
ВАРИАНТ НОМЕР ДВА (уже моё творение, не много косячит
P.S. повторюсь что дело происходит в BorlandC_3.1 на С-ях Это сообщение отредактировал(а) Sentrashi - 22.11.2007, 22:28 |
||||||||
|
|||||||||
| somwan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.11.2007 Репутация: нет Всего: нет |
Sentrashi спасибо за код по открытию bmp.Мне очень помогло.К сожалению твой код править немогу,он выше моего уровня.А за код спасибо.
|
|||
|
||||
| Sentrashi |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 22.11.2007 Где: Ёбург Репутация: нет Всего: нет |
somwan вот надыбал мож пригодиться: дровишка для работы с 256 цветами
подключить думаю разберешся как int gd = DETECT, gm, gr; installuserdriver("BGI256V2", detect); initgraph(&gd, &gm, " Disk:\\............. "); Это сообщение отредактировал(а) Sentrashi - 22.11.2007, 20:35 Присоединённый файл ( Кол-во скачиваний: 21 )
BGI256V2.BGI 8,81 Kb |
|||
|
||||
| somwan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.11.2007 Репутация: нет Всего: нет |
Спасибо ,теперь мне хватит материала
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |