如何在 C++ 中更改 RGB 值

How to change RGB values in c++

对于可能被考虑的问题,我深表歉意"newbie,",但我才刚刚开始学习如何使用 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)。我的问题是我到底该怎么做?打开文件后,如何用另一个值替换每三个数字?

非常感谢任何帮助。谢谢!

http://en.wikipedia.org/wiki/JPEG 查找文件格式以及它们如何以二进制形式存储。它与其他文件不同。

我觉得这个问题的潜力被忽略了,因为不相关的代码片段和误导性的打开和阅读文本文件部分。

您可以在 windows.h(MFC)

中用 HBITMAP 替换更改和替换位图中的 RGB 值

解决方案:

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) 
}