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

Заменить определенный байты изображения - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Построить массив из заданного числа элементов http://www.cyberforum.ru/cpp-beginners/thread984548.html
программа должна построить массив из заданного числа элементов .но она всегда выводить 10 . в чем дело? #include "stdafx.h" #include "iostream" using namespace std; void masiv(int *a,int n) { for(int i=0;i<n;i++) cout<<*a++<<" ";
C++ srand(), rand() и их seed Пишу класс, объекты которого представляют из себя трехмерные модели планет. Для того что бы разнообразить ландшафт использую алгоритм, основанный на srand(seed) и rand(). Вопросы: Гарантированы ли одинаковые генерации чисел для одного и тогоже семени рандома? (нужно для того что бы передавать число, ну или файл настроек генерации на крайний случай, а не всю модель целиком) Зависит ли... http://www.cyberforum.ru/cpp-beginners/thread984546.html
задача по суммированию рядов C++
Уважаемые программисты, еще раз вынужден к вам обратиться за помощью! Дочери в 11 классе Мехмат Лицея задают несусветные задачи с которыми я и мои друзья не в силах справится! Помогите пожалуйста, если что отплачу материально! Заранее спасибо!
Вывод таблицы умножения C++
Borland C++ Составить программу, которая распечатывает на экране таблицу умножения, по типу программы нахождения квадрата числа #include <stdio.h> #include <conio.h> main() { int i, N; printf ( "Введите число N: " ); scanf ( "%d", &N );
C++ Составить программу для расчёта значений величин, заданных в виде сложных алгебраических формул http://www.cyberforum.ru/cpp-beginners/thread984512.html
Доброго дня, начал учится и тут буквально после программы "Hello world!". Даже не знаю основы C++ дают такие задание. Помогите пожалуйста решить. Среда разработки Builder C++. Задание № 1 РАСЧЁТ ЗНАЧЕНИЙ АРИФМЕТИЧЕСКИХ ВЫРАЖЕНИЙ (см. вложение) Цель задания: составить программу для расчёта значений величин, заданных в виде сложных алгебраических формул и произвести отладку программы....
C++ Массив размерностью 100 заполнить случайными числами Помогите с заданием,кому не трудно. Массив размерностью 100 заполнить случайными числами, лежащими в диапазоне от –10 до 10. Во всех последовательностях положительных чисел заменить значения элементов с максимальным и минимальным значением на среднее для этой последовательности Буду благодарен) подробнее

Показать сообщение отдельно
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
22.10.2013, 16:43     Заменить определенный байты изображения
Здравствуйте, я хочу заменить определенный байты изображения, вроде бы по коду у меня все нормально, но похоже я что-то напутал с флагами при открытии и вместо изменения у меня происходит заполнение файла нулями с самого начала, причем именно нулями, хотя должны быть измененные байты. Подскажите пожалуйста, что у меня не так?
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
void  CreateImage(string pathImage, string pathMessage)
{
    char image_b = NULL;
    char image_g = NULL;
    char message_b = NULL;
    int messageSize = GetFileSize(pathMessage);
    const int size = 1;
    ifstream image_r;
    ifstream message (pathMessage, ios::binary | ios::in);
    ofstream image_w; 
    int j = 0;
 
 
    for(int i = 0; i < (messageSize*3)+1; i+=3)
    {
        if (i == messageSize*3)
        {
            image_b = (image_b & 0xf0) | 0x00;
            image_g = (image_g & 0xf0)| 0x0f;
            image_w.open(pathImage, ios::binary | ios::out);
            image_w.seekp((55+i)*sizeof(char), std::ios::beg);
            image_w<<image_b;
            image_w.seekp((55+i+1)*sizeof(char), std::ios::beg);
            image_w<<image_g;
            image_w.close();
        } 
        else
        {
            message.seekg(j);
            message.get(message_b);
            image_r.open(pathImage, ios::binary | ios::in);
            image_r.seekg((55+i)*sizeof(char), std::ios::beg);
            image_r.get(image_b);
            image_r.seekg((55+i+1)*sizeof(char), std::ios::beg);
            image_r.get(image_g);
            image_r.close();
 
            image_b = (image_b & 0xf0)|((message_b & 0xf0) >> 4);
            image_g = (image_g & 0xf0)|(message_b & 0x0f);
 
            image_w.open(pathImage, ios::binary | ios::out);
            image_w.seekp((55+i)*sizeof(char), std::ios::beg);
            image_w<<image_b;
            image_w.seekp((55+i+1)*sizeof(char), std::ios::beg);
            image_w<<image_g;
            image_w.close();
            j++;
        }
        
    }
 
    message.close();
}
Добавлено через 2 часа 14 минут
Блин, ну а все таки, почему он перезаписывает файл, вместо того, что бы изменять указанные байты??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru