2015-02-07 30 views
-4

對於可能被視爲「新手」的問題,我表示歉意,但我剛開始學習如何使用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

回答

1

我覺得這個問題的潛力被忽略了,因爲代碼的不相關代碼片段和誤導性的開放和閱讀文本文件部分。

可以更換變化和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

0

http://en.wikipedia.org/wiki/JPEG查找文件格式以及它們如何存儲在二進制文件中。它與其他文件不一樣。

+0

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