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

Чтение-запись bmp-файлов - C++

Восстановить пароль Регистрация
 
Некит
0 / 0 / 0
Регистрация: 04.05.2014
Сообщений: 3
04.05.2014, 13:56     Чтение-запись bmp-файлов #1
Реализую класс для представления 256-цветных бмп картинок. В классе есть 3 конструктора: по умолчанию(создает картинку 640*480 черного цвета), с параметрами(ширина, высота, цвет), копировщик. Нужно перегрузить операторы ввода/вывода в файл через fstream, но я никогда с этим не работал, 3 дня уже гуглю, ничего не получается( Подскажите, пожалуйста, как это делается, или может я вообще и поля не те в классе сделал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class BMP8Picture
{
  BitMapHeader file;
  tagRGBQUAD pltr;
  unsigned char color;
  int width;
  int height;
public:
    BMP8Picture();
    BMP8Picture(int w, int h, unsigned char c);
    BMP8Picture(BMP8Picture& bm);
    fstream france(fstream &fs);
    friend fstream& operator <<(fstream &out, BMP8Picture& bm);
    friend fstream& operator >> (fstream &in, BMP8Picture &bm);
};
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "bmp8picture.h"
#include<fstream>
#include<ios>
 
BMP8Picture::BMP8Picture()
{
    width = 640;
    height = 480;
    color = 0;
}
 
BMP8Picture::BMP8Picture(int w, int h, unsigned char c)
{
    if(w%4!=0 || h%4!=0 || c<0 || c>255)
    {
        throw "Error!";
    }
    width = w;
    height = h;
    color = c;
}
BMP8Picture::BMP8Picture(BMP8Picture &bm)
{
   width = bm.width;
   height = bm.height;
   color = bm.color;
   file = bm.file;
}
fstream BMP8Picture::france(fstream& fs)
{
 
    int f = this->height; int u = this->width;
        unsigned char color = 79 ;
        unsigned char color2 = 210 ;
        unsigned char color3 = 255 ;
 
 
            fs.seekg(1078,ios_base::beg);
            for(int i = 0; i<f; ++i)
            {
                for(int o = 0; o<u/3; ++o)
                {
                    fs.write((char*) &color, sizeof(unsigned char));
                }
                for(int o = u/3; o<(2*u)/3; ++o)
                {
                    fs.write((char*) &color2, sizeof(unsigned char));
                }
                for(int o = (2*u)/3; o<u; ++o)
                {
                    fs.write((char*) &color3, sizeof(unsigned char));
                }
 
            }
            return fs;
 }
fstream& operator <<(fstream &out, BMP8Picture& bm)
{
       out.read((char*) &bm.file, sizeof(BitMapHeader));
 
        size_t padding = 0;
 
        for(int i=0;i< bm.height;i++)
        {
                for (int j = 0; j < bm.width; j++)
        {
 
 
                        out.write((char*) &bm.pltr, sizeof(tagRGBQUAD));
 
 
                }
            for (size_t t = 0; t < padding; ++t) {
 
                out.write((char*) &bm.pltr, sizeof(tagRGBQUAD));
 
            }
        }
 
return out;
 
 
}
 
fstream& operator >>(fstream &in, BMP8Picture& bm)
{
    
}
C++
1
2
3
4
5
6
7
8
9
int main()
{
  BMP8Picture a(640,480, 255);
  fstream out("kart.bmp", ios_base::binary | ios_base::out | ios_base::in );
 
 
 
 
}
Вот то, что есть. Спасибо

Добавлено через 42 минуты
Подскажите, пожалуйста, хотя бы с методами записи/чтения из файла
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2014, 13:56     Чтение-запись bmp-файлов
Посмотрите здесь:

Чтение из двух файлов и запись в третий C++
Чтение\запись файлов C++
Запись и чтение файлов на диск и с диска C++
C++ Быстрое чтение и запись файлов
C++ чтение/запись файлов
C++ Запись и чтение двоичных файлов
Чтение из двух файлов и запись в один C++
Считывание и запись .bmp файлов C++

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

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

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