Я прошу прощения за вопрос, который можно считать «новичком», но я только начал изучать, как использовать c ++. Я знаю, как читать и записывать текстовые файлы, но если я хочу открыть файл изображения, это будет то же самое, что и открытие обычного текстового файла, или он будет другим? Я считаю, что это не так, потому что когда я перетаскиваю файл в CodeBlocks, чтобы просто изучить его, он просто использует числа. Например, строка 4 — 13 33 66, а строка 19 — 15 28 80.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream file_reader("file_name_example.ppm", ios::binary | ios::out);
if (! file_reader.is_open())
{
cout << "The file cannot open." << endl;
}return 0;
Я только хочу изменить значение синего цвета изображения, поэтому я понимаю, что мне нужно будет выполнить цикл for для каждого третьего значения (R G B). У меня вопрос, как именно я это делаю? После того, как я открою файл, как заменить каждое третье число другим значением?
Я действительно ценю любую помощь. Спасибо!
Я чувствую, что потенциал этого вопроса был проигнорирован из-за нерелевантного фрагмента кода и вводящей в заблуждение части открытия и чтения текстового файла.
Вы можете заменить изменение и заменить значения RGB в растровых изображениях на HBITMAP в windows.h (MFC)
Решение:
HBITMAP hBmp;
CCloneBitmap bmpClone;
HICON hIcon;
hBmp=LoadBitmap(AfxGetResourceHandle(),MAKEINTRESOURCE(ID_LIGHTCAR));
if(hBmp!=NULL)
{
bmpClone.Clone(hBmp);
DeleteObject(hBmp);
bmpClone.ChangeColor(IRGB(0,0,0), IRGB(255,0,0));
// change BLACK pixels to RED ones.
//Change the IRGB values to whatever you would like - blue - IRGB(0,0,255)
}
http://en.wikipedia.org/wiki/JPEG посмотрите форматы файлов и как они хранятся в двоичном формате. Это не то же самое, что и другие файлы.