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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Tilk
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 79
#1

Чтение BMP - C++

16.11.2010, 07:28. Просмотров 1171. Ответов 0
Метки нет (Все метки)

Всем привет. Пытаюсь прочитать данные BMP из файла размером 50 на 25 и поставить их в соотвествие массиву по условию - true если пиксель желтый (255, 255, 0) и false во всех остальных случаях.

Использую код приведенный ниже. Результат работы программы - найдено достаточно много желтых пикселей, но расположение некорректное.

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
38
39
40
41
42
43
44
45
void Gameplay::ReadPlaceFromFile()
{
    FILE * pFile;
    long lSize;
    size_t result;
    char* tbmpbuffer;
    BITMAPFILEHEADER        tBMP;
    const char filename[] = "Data/test.bmp";
 
    pFile = fopen(filename , "rb" );
    if (pFile==NULL) {fputs ("File error",stderr); exit (1);}
 
    fseek (pFile , 0 , SEEK_END);
    lSize = ftell (pFile);
    rewind (pFile);
 
    tbmpbuffer = (char*) malloc (sizeof(char)*lSize);
    if (tbmpbuffer == NULL) {fputs ("Memory error",stderr); exit (2);}
 
    result = fread (tbmpbuffer,1,lSize,pFile);
    if (result != (size_t)lSize) {fputs ("Reading error",stderr); exit (3);}
 
    memcpy(&tBMP,tbmpbuffer,sizeof(BITMAPFILEHEADER));
 
    fclose (pFile);
 
    unsigned char C;
    int r, g, b;
 
    for(int i=0;i<50;i++)
    for(int j=0;j<25;j++)
    {
        memcpy(&C,tbmpbuffer + tBMP.bfOffBits + 0 + i*3 + 150*j, 1);
        r = C;
        memcpy(&C,tbmpbuffer + tBMP.bfOffBits + 1 + i*3 + 150*j, 1);
        g = C;
        memcpy(&C,tbmpbuffer + tBMP.bfOffBits + 2 + i*3 + 150*j, 1);
        b = C;
 
        if(r == 255 && g == 255)
            testworld[i][j] = true;
        else 
            testworld[i][j] = false;
    }
}
Объявление testworld.

C++
1
bool testworld[50][25];
Файл для чтения приложен. (Запаковал в архив, т.к. в чистом виде bmp не допускается)
0
Вложения
Тип файла: rar test.rar (383 байт, 46 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2010, 07:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение BMP (C++):

Чтение BMP 24 - C++
Здравствуйте! Задача: Нужно зашифровать текстовый файл в картинку формата BMP24. Проблема: Перечитал около десятка страниц форумов но...

Чтение BMP изобржений - C++
Доброе время суток. Задача считать BMP изображение и отрендарить его с помощью SDL. Написал функцию по чтению и у меня проблема в том что...

Чтение BMP файла и его обработка - C++
Есть задание на изучение эффективного кодирования методом Шеннона-Фано. Для этого берётся фотография 128х128 пикселей, с глубиной цвета 256...

Работа с BMP-файлами (класс "8 битное BMP изображение) - C++
Написать класс &quot;8 битное BMP изображение&quot;.Класс должен содержать 3 конструктора: конструктор по умолчанию, конструктор с параметрами и...

Переделать в коде чтение из файла в чтение с клавиатуры - C++
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл должен начинаться со слова, между...

Чтение заголовка BMP - C++
Есть след код, который должен читать заголовок BMP Но он его читаеть криво (пропускает 2 байта) Ктонить может помочь решить эту...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2010, 07:28
Привет! Вот еще темы с ответами:

Чтение BMP файла - C++
Пишу программу в которой необходимо считать заголовок BMP файла. Файл безпалитровый, глубина цвета 24, то есть по 8 бит каждой составляющей...

bmp 8 - C++
Помогите пожалуйста, нужно реализовать алгоритм Линде-Бузо-Грея для BMP файла. Проблема появляется при записи файла в формат bmp 8 -...

bmp в C++ - C++
Помогите пожалуйста написать программу на C++ которая уменьшает разрешение bmp картинки в 2 раза. Можно использовать только библиотеку ...

[C++] 24-битные BMP - C++
Программа не хочет кодировать 24-битные BMP. Под кодированием я понимаю разбитие изображение на квадраты по 10 пикселей (в программе - по...


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

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

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