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

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

Восстановить пароль Регистрация
 
ogcjm124
2 / 2 / 0
Регистрация: 31.07.2011
Сообщений: 143
30.10.2011, 21:15     Не получается перекрасить BMP-ку.What's the matter? #1
Всем привет.
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?
Посмотрите здесь:

C++ bmp (24 битный)
C++ BMP - файл
C++ bmp в C++
C++ Работа с BMP-файлами (класс "8 битное BMP изображение)
C++ bmp 8
Стеганография в BMP C++
Работа с bmp файлом не получается найти ошибку C++
Найти минимальное количество шариков, которое необходимо перекрасить, чтобы все шарики были одного цвета C++

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

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

Текущее время: 18:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru