如何更改C++中的RGB值

问题描述:

对于可能被视为“新手”的问题,我表示歉意,但我刚开始学习如何使用C++。我知道如何读取和写入文本文件,但是如果我想打开一个图像文件,它会像打开一个普通的文本文件一样,还是它不同?我相信它是不同的,因为当我将文件拖到CodeBlocks来检查它时,它只是使用数字。例如,行4是13 33 66和行19是15 28 80如何更改C++中的RGB值

#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循环到做每第三个值(RGB)。我的问题是我该如何做到这一点?打开文件后,如何用另一个值替换每个第三个数字?

我真的很感激任何帮助。谢谢!

+2

你_ “代码示例” _仅仅是荒谬,在相关性_“这个问题”_(这实际上并不存在)。 – 2015-02-07 23:44:10

+0

我已经将此标记为“不清楚你在问什么”,因为你基本上是在试图欺骗别人,并通过添加一个与你的努力和问题无关的简单代码片段来避免回火。 – Barracuda 2015-02-07 23:51:52

+1

你知道用于PPM文件的[netpbm格式](http://en.wikipedia.org/wiki/Netpbm_format)吗? – 2015-02-08 00:00:03

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

可以更换变化和WINDOWS.H替换与HBITMAP位图的RGB值(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) 
} 
+0

我注意到他的图像是ppm,这个答案是针对bmp,但你可以将ppm转换成bmp文件 – 2015-02-08 00:37:43

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

+0

你仍然不能改变文件格式... – 2015-02-08 00:25:22