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

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

Войти
Регистрация
Восстановить пароль
 
ogcjm124
2 / 2 / 0
Регистрация: 31.07.2011
Сообщений: 143
#1

Не получается перекрасить BMP-ку.What's the matter? - C++

30.10.2011, 21:15. Просмотров 367. Ответов 0
Метки нет (Все метки)

Всем привет.
1)Надо перекрасить BMP-ку в указанный user цвет.Конечно цвет меняется,но это происходит как-то странно.Можете глянуть код(см.ниже)?
2)После того,как я записываю все данные,в том числе и новый цвет вроде должен быть конец файла,но проверка говорит об обратном,почему так?
3)Ребят правильно ли я понимаю структуру Bmp-ки:
BITMAPFILEHEADER
BITMAPINFOHEADER
RGBQUAD
ГРАФИЧЕСКИЕ ДАННЫЕ
Итак,как я понимаю цвет каждого пикселся описывается структурой RGBQUAD,но тогда что содержит раздел ГРАФИЧЕСКИЕ ДАННЫЕ.
4)Когда я открываю файл на чтение,например он красного цвета.Я считываю данные в структуры BITMAPFILEHEADER,BITMAPINFOHEADER последовательно.После чего вычисляю сколько байт от BITMAPINFOHEADER до ГРАФИЧЕСКИХ ДАННЫХ и выясняю что 0;Таки образом данные о цветах у меня прочитать не получается как быть?
5)Верно ли утверждение что RGBQUAD содержится в разделе графические данные?


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 <iostream>
#include <Windows.h>
#include <conio.h>
#define BMFH BITMAPFILEHEADER
#define BMIH BITMAPINFOHEADER
using namespace std;
 
int main ()
{
    int i;
    BMFH bfh;
    BMIH bih;
    RGBQUAD palette;
    FILE *ptr;
    
    ptr=fopen("bmp.bmp","rb+");
    if (!ptr) exit(1);
    
    fread (&bfh,1,sizeof(BMFH),ptr);
    fread (&bih,1,sizeof(BMIH),ptr);
 
    RGBQUAD *buf=new RGBQUAD[bih.biWidth*bih.biHeight*sizeof(RGBQUAD)];
    
    cout << "Enter color\n";
    cin >> palette.rgbBlue >> palette.rgbGreen >> palette.rgbRed;
    palette.rgbReserved=0;
    
    for(i=0;i<bih.biHeight*bih.biWidth;i++)
        buf[i]=palette;
    
    fwrite(buf,1,bih.biWidth*bih.biHeight*sizeof(RGBQUAD),ptr);
 
    cout << feof(ptr);
    fclose(ptr);
    getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2011, 21:15     Не получается перекрасить BMP-ку.What's the matter?
Посмотрите здесь:

Работа с bmp файлом не получается найти ошибку - C++
Добрый день, знаю что существуют разные способы считывания bmp файла, мне нужно считать таким образом что бы заголовок лежал в одном...

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

Найти минимальное количество шариков, которое необходимо перекрасить, чтобы все шарики были одного цвета - C++
Написал код для одной задачи. Ответ выдает он вроде правильный. Но на сайте при тестировании моего алгоритма, он проходит тест на 31%...

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

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

BMP - файл - C++
Доброго времени суток ! Друзья, где можно почитать про BMP файлы, посмотреть примеры (код) ? Интересует: как изменить яркость. ...

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

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

bmp (24 битный) - C++
Ребят всем привет я бы выложил тут код,ну на самом деле с моей точки зрения это не к чему.Встала задача открыть 24 битный bmp файл и...

Wav в bmp - C++
Подскажите, пожалуйста, как разложить побитово wav-file и сложить его в bmp? Можно примеры кода?


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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