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

Не записывает в файл (увеличить bmp изображение в 2 раза) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить метод Run для вычисления выражения http://www.cyberforum.ru/cpp-beginners/thread884216.html
Помогите плиз с задачкой!!! Составить метод Run для вычисления выражения t= (2cos (x-(pi/6)))/(0.5+ (sin*siny))*(1+((z*z)/(3-(z*z)/5))) x=14,26 y=-1,22 z=3,5*0,01 t=0,564849
C++ Непонятки с функциями или циклом Данный код должен рассчитывать сумму (s), пока сумма меньше либо равна некому числу f. У меня почему-то всегда на выходе s=0 #include "stdafx.h" #include <iostream> #include <windows.h>... http://www.cyberforum.ru/cpp-beginners/thread884213.html
Посчитать количество различных символов в тексте C++
Помогите написать программу, должна работать так: программа открывает текстовый файл, в котором есть какой либо текст и считает количество различных символов в нем, должна вывести: a= b= c= и...
C++ Из массива А(10) четные положительные числа записать в массив Х. А в этом новом массиве найти наименьший элемент
Из массива А(10) четные положительные числа записать в массив Х. А в этом новом массиве найти наименьший элемент. Непонятно как четные элементы массива А записать в массив Х Добавлено через 50...
C++ Код выполняющий код командной строки http://www.cyberforum.ru/cpp-beginners/thread884194.html
Кто знает код выполняющий код командной строки? (тоесть чтобы код который бы выполнял например "CD: C:\C++")?
C++ не могу понять в чем ошибка Вот мое задание: Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Х до Х с шагом dx. Функция F: -ax^2 -b при x<5 и с!=0 (!= это не равно) (х-a)/x при x>5 и с=0... подробнее

Показать сообщение отдельно
Eagle123
6 / 6 / 0
Регистрация: 03.10.2012
Сообщений: 51

Не записывает в файл (увеличить bmp изображение в 2 раза) - C++

29.05.2013, 21:20. Просмотров 548. Ответов 9
Метки (Все метки)

Дано задание увеличить bmp изображение в 2 раза. Написал программу, которая по идее, должна делать сие действие (все в классе), но записи в файл не происходит? Подскажите кто-нибудь, почему? Вот код с методами класса:

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
BMP::BMP(void)
{
}
 
BMP::BMP(char* filename)
{
    this->read_info_of_file(filename);
}
 
void BMP::read_info_of_file(char* filename)
{
    file.open(filename, ios::binary | ios::in | ios::out | ios::ate);
    file.seekg(0, ios::beg);
    file.read((char*)& this->BMH, sizeof(BMH));
    file.read((char*)& this->BMIH, sizeof(BMIH));
    file.read((char*)& this->Quad, sizeof(Quad));
}
void BMP::write_header()
{
    file.seekg(0, ios::beg);
    file.write((char*)&this->BMH, sizeof(BMH));
    file.write((char*)&this->BMIH, sizeof(BMIH));
}
 
void BMP::x2_zoom()
{
    unsigned int n = this->BMIH.biWidth;
    unsigned int m = this->BMIH.biHeight;
    unsigned int _new_n = this->BMIH.biWidth * 2;
    unsigned int _new_m = this->BMIH.biHeight * 2;
 
    BYTE *buff = new BYTE [n * m];
    file.seekg(this->BMH.bfOffbits + 14, ios::beg);
    for(int i = 0; i < n * m; i ++)
    {
        file.read((char*)&buff[i], sizeof(BYTE));
    }
 
    BYTE *New_2x_Image = new BYTE [_new_m * _new_n];
 
    int i = 0;
    file.seekg(this->BMH.bfOffbits + 14, ios::beg);
    
    for(int i = 0; i < n;i ++)
        for(int j = 0; j < m; j ++)
        {
            int i1 = i * 2;
            int j1 = j * 2;
            New_2x_Image [i1 * 2 * m + j1] = buff [i * m + j];
            New_2x_Image [i1 * 2 * m + j1 + 1] = buff [i * m + j];
            New_2x_Image [(i1 + 1) * 2  * m + j1] = buff [i * m + j];
            New_2x_Image [(i1 + 1) * 2 * m + j1 + 1] = buff [i * m + j];
        }
    this->BMIH.biWidth = _new_n;
    this->BMIH.biHeight = _new_m;
 
    
    this->write_header();
    file.seekg(this->BMH.bfOffbits + 14, ios::beg);
    for(int i = 0; i < _new_n * _new_m; i ++)
    file.write((char*)New_2x_Image[i], sizeof(BYTE));
    
    
    delete[] buff;
    delete[] New_2x_Image;
    
}
 
 
BMP::~BMP(void)
{
    file.close();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru