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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Записи. Дано время t1 и время t2. Определить, сколько времени пройдет от t1 до t2 http://www.cyberforum.ru/cpp-beginners/thread1165748.html
Дано время t1 и время t2. Гарантируется, что t1 и t2 -время одного дня, а также что t1<t2. Определить, сколько времени пройдет от t1 до t2. Формат входных данных Первая строка входного файла содержит описание времени t1 в формате hh:mm:ss. Где 0<=hh<=23, 0<=mm<=59,0<=ss<=59 . Вторая строка описывает время t2 в том же формате. Формат выходных данных В выходной файл выведите время, оставшееся...
C++ Последний элемент линейного массива Добрый день, уважаемые программисты. Ответьте, пожалуйста, как найти последний элемент линейного массива действительных чисел. http://www.cyberforum.ru/cpp-beginners/thread1165722.html
C++ Подсчет символов через циклы
Здравствуйте. Не знаю как реализовать вот такую программу: Напишите, пожалуйста, программу, которая выводит на экран заданную пользователем с клавиатуры строку символов (словосочетание, текст) и подсчитывает количество символов в этой строке, не считая пробелов. Все надо реализовать просто и понятно через циклы. Заранее спасибо!!!
C++ Форма на Visual c++ 2013 - нужен шаблон
Так как я знаю немного операторов c++ то хочу попробовать написать прогу на c++ с формой. Но по причине того что компания Microsoft убрала шаблон Windows form из c++ то для написания прог с формой нужно рыть в win api. Пожалуйста найдите мне шаблон Windows Form для Visual C++ 2013 Пробовал аблон от 2012 на 2013 поставить но он не заработал. Использую NET Framework 4.5.1 тоесть последнюю...
C++ Программа для возведения числа в степень http://www.cyberforum.ru/cpp-beginners/thread1165708.html
Здравствуйте. Преподаватель остался недовольным, из-за того, что я это реализовал через готовый оператор, а надо через цикл(а как это понимать я вообще ни в курсе, ведь через оператор меньше памяти затрачивается): #include <vcl.h> #pragma hdrstop #include <iostream.h> #include <math.h> //--------------------------------------------------------------------------- #pragma argsused int...
C++ Как сделать так чтобы при каждом выделении памяти в методе была возможность ее очистить и вернуть результат? Доброго времени суток! Есть код класса и хотелось бы устранить в нем следующие недочеты: 1) Как сделать так чтобы при каждом выделении памяти в методе была возможность ее очистить и вернуть результат? 2) Как при таком типе данных vector <vector<int>> реализовать функцию добавления элемента? (что-то типа push_back() ) Заранее спасибо! push_back() который сейчас не работает. Вот код: ... подробнее

Показать сообщение отдельно
Некит
0 / 0 / 0
Регистрация: 04.05.2014
Сообщений: 3
04.05.2014, 13:56     Чтение-запись bmp-файлов
Реализую класс для представления 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 минуты
Подскажите, пожалуйста, хотя бы с методами записи/чтения из файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru