2015-06-20 64 views
1

我具有存儲在存儲器中的形式的圖像的原始字節,即我有char*指向圖像數據的存儲器位置。現在,我需要以某種方式驗證圖像數據是否合法。轉儲原始圖像數據

我目前試過的是簡單地將字節轉儲到文件中。我試圖傾入3種類型的文件,但沒有運氣:

std::ofstream ofs; 
ofs.open("Image.raw", std::ofstream::out); 
ofs.write((char*)imgData, imageInfo.imageLen); 
ofs.close(); 
// Have also tried "Image.tiff" and "Image.ppm" 

有沒有什麼辦法查看內容?只需要提一下,我正在Win平臺上編寫此代碼。幾年前,我記得在MAC OS X上做了類似的事情,取得了成功的結果!

+1

什麼是RAW圖像格式? yuv? rgb?作爲ppm,tiff,bmp是容器,你需要添加enveloppe。 – mpromonet

+0

如果您想要一個簡單的容器格式,請查看PNM格式。 – o11c

回答

1

您可以用二進制寫直出爲RGB您已經有 - 說給一個叫image.rgb文件。

然後用ImageMagick,這是安裝在大多數Linux發行版,以及適用於OSX和Windows將其轉換爲PNG,JPEG或一些更常見:

convert -size 300x400 -depth 8 image.rgb result.png 

convert -size 300x400 -depth 8 image.rgb result.jpg 

你將需要告知ImageMagick上述圖像的尺寸,因爲它們顯然不是嵌入在原始文件中,就像它們將在具有標頭的JPEG或PNG中一樣。

如果您選擇在.rgb沒有結束的文件名,則需要使用RGB前綴是:這樣的

convert -size ... RGB:something.bin result.png 
+0

我嘗試在Windows上使用ImageMagick,但我認爲有一些缺失。當我運行你所提到的命令時,我得到錯誤:「選項-size的無效參數」。 – Sankalp

+0

微軟發佈了一個名爲'convert'的程序 - 它將文件系統轉換爲NTFS。嘗試使用ImageMagick的「convert」完整路徑,例如C:\ ImageMagick \ convert -size ....'或者你安裝它。 –

+0

哎呀!我已經知道'convert'是預安裝的文件系統轉換。我只使用ImageMagick命令,然後得到提到的錯誤。 – Sankalp