Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/2: Рейтинг темы: голосов - 2, средняя оценка - 4.50
73 / 19 / 0
Регистрация: 26.04.2012
Сообщений: 233
1

Получение инфы. из файла с изображением

16.10.2012, 21:43. Просмотров 483. Ответов 6
Метки нет (Все метки)


Здравствуйте,ув. форумчане=)
Помогите пожалуйста)
Нужно получить некоторые данные из файла формата bmp а именно ширину,высоту,и глубину(бит на пиксель)
зная структуру бмп - http://c-site.h1.ru/infa/bmp_struct.htm
пишу вот код:
C++
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
30
31
32
33
34
35
36
37
#include <cstdlib>
#include <stdio.h>
#include <conio.h>
 
 
FILE *f;
unsigned long SIZE,width,height;
    unsigned int depth;
int KOD;
 
int main ()
{
 
    if ((f = fopen("1.bmp", "rb"))==NULL) 
  printf("He удается открыть файл.\n");
        
        fseek(f, 2L, SEEK_SET); 
    fread(&SIZE,sizeof(long),1,f);
    
        fseek(f, 18L, SEEK_SET); 
    fread(&width,sizeof(long),1,f);
 
 
    fseek(f, 22L, SEEK_SET); 
    fread(&height,sizeof(long),1,f);
 
    fseek(f, 28L, SEEK_SET); 
    fread(&depth,sizeof(int),1,f);
 
printf("depth - %i \n",&depth);
printf("width - %d \n",&width);
printf("height - %d \n",&height);
printf("size - %d \n",&SIZE);
getch();
return 0;
 
}
но постоянно выводятся явно не те числа и всё время разные....что я не так написал?...чую дело точно замешано в printf а именно со всякими %i и %d
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2012, 21:43
Ответы с готовыми решениями:

Получение инфы с сайта
Нужно написать приложение которая будет сравнивать цены на нескольких интернет...

Получение инфы о системе
Доброго времени суток, Подскажите, с помощью какой функции в WMI можно определить загруженность...

Получение инфы из внедренного представления
Можно ли получить данные из внедренного представления, при этом у представления поднять флаг...

Получение списка докладной инфы о процессе
Подскажите пожалуйста название АПИ функции или NT функции, которая возвращает подробную инфу о...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
6
Don't worry, be happy
16972 / 9853 / 1897
Регистрация: 27.09.2012
Сообщений: 24,431
Записей в блоге: 1
16.10.2012, 21:45 2
C++
1
2
unsigned long SIZE,width,height;
    unsigned int depth;
попробуйте использовать тип int
0
73 / 19 / 0
Регистрация: 26.04.2012
Сообщений: 233
16.10.2012, 21:53  [ТС] 3
так как же,long же 4 байта,а данные там как раз по 4 байта
0
Don't worry, be happy
16972 / 9853 / 1897
Регистрация: 27.09.2012
Сообщений: 24,431
Записей в блоге: 1
16.10.2012, 22:08 4
Недавно делал, разбирайтесь
C++
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
int main(){
    setlocale(LC_CTYPE, "Rus");
 
    FILE * pFile;
    UI BMP_Width=0; 
    UI BMP_Height=0;
    UI BMP_Start=0;
 
    pFile=fopen("noshipshot.bmp","rb");
    
    if(!pFile){
        printf("pFile = NULL");
        return 0;
    }
 
    fseek(pFile,10,SEEK_SET);
    fread(&BMP_Start,4,1,pFile);
    fseek(pFile,18,SEEK_SET);
    fread(&BMP_Width,4,1,pFile);
    fread(&BMP_Height,4,1,pFile);
    printf("Указатель на фаил: 0x%p\nСмещение до картинки: %d\nШирина картинки: %d\nВысота картинки: %d\n",pFile,BMP_Start,BMP_Width,BMP_Height);
 
 
    fclose(pFile);
    return 0;
}
0
1769 / 747 / 153
Регистрация: 03.06.2009
Сообщений: 5,282
16.10.2012, 22:09 5
C
1
2
3
4
printf("depth - %i \n",depth);
printf("width - %d \n",width);
printf("height - %d \n",height);
printf("size - %d \n",SIZE);
не нужно брать адреса при выводе.
К тому же придется поэкспериментировать с depth. В BMP это 16-битное значение, а вот тип int может быть 16-битным и 32-битным в зависимости от компилятора.

Р.Ы. Пока чухался, уже не актуально
1
73 / 19 / 0
Регистрация: 26.04.2012
Сообщений: 233
17.10.2012, 13:38  [ТС] 6
Актуально актуально!)
Такая дурацкая очепятка(((
Исправил,всё правильно показал)

Добавлено через 2 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
Недавно делал, разбирайтесь
C++
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
int main(){
    setlocale(LC_CTYPE, "Rus");
 
    FILE * pFile;
    UI BMP_Width=0; 
    UI BMP_Height=0;
    UI BMP_Start=0;
 
    pFile=fopen("noshipshot.bmp","rb");
    
    if(!pFile){
        printf("pFile = NULL");
        return 0;
    }
 
    fseek(pFile,10,SEEK_SET);
    fread(&BMP_Start,4,1,pFile);
    fseek(pFile,18,SEEK_SET);
    fread(&BMP_Width,4,1,pFile);
    fread(&BMP_Height,4,1,pFile);
    printf("Указатель на фаил: 0x%p\nСмещение до картинки: %d\nШирина картинки: %d\nВысота картинки: %d\n",pFile,BMP_Start,BMP_Width,BMP_Height);
 
 
    fclose(pFile);
    return 0;
}
Вот вопрос по
C++
1
2
3
fseek(pFile,18,SEEK_SET);
    fread(&BMP_Width,4,1,pFile);
    fread(&BMP_Height,4,1,pFile);
после width не передвинули курсор...То есть после fread курсор так же передвигается и сохраняет положение?
0
Don't worry, be happy
16972 / 9853 / 1897
Регистрация: 27.09.2012
Сообщений: 24,431
Записей в блоге: 1
17.10.2012, 13:45 7
Цитата Сообщение от Justix Посмотреть сообщение
после width не передвинули курсор...То есть после fread курсор так же передвигается и сохраняет положение?
Да, курсор сам переезжает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2012, 13:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Инструмент для получение инфы сервер, таблицы, поля
Все привет. Хочу для себя создать сервис, который позволил бы получать необходимую информацию с MS...

Получение инфы с сайта используя curl и дальнейшая обработка информации
Нашел вот пример. &lt;?php // Поиск книг на сервере amazon.com $url =...

Вывод инфы из файла
Добрый день, написал загрузку файла на сервер, и там же написал скрипт показывающий данные в файле...

Вывод инфы из файла
Багаж Авиапассажира характеризуется фамилией пассажира, номером рейса, датой вылета, кол-во вещей и...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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