2011-10-23 94 views
-2

我至c工作的圖像處理++,我必須讀取JPEG圖像的在char格式的報頭,我必須檢查圖像的相機/系統/設備的信息,我怎樣才能做到這一點。文件讀取在C++

+0

,這真是個文件,或者在緩衝區只是原始數據? –

+0

您是否真的在閱讀文件時遇到問題,或者是如何找到相機的元數據?對於元數據,您可能需要提出更具體的問題。 – Soren

+1

順便說一句,標準英語句子以句點結尾,'。',而不是逗號,','。 –

回答

1

如果文件不是太大,你可以閱讀所有到內存:

#include <vector> 
#include <fstream> 

std::ifstream infile("thefile.bin", std::ios::binary); 
infile.seekg(0, std::ios::end); 

const std::size_t filesize = infile.tellg(); 
std::vector<char> buf(filesize); 

infile.seekg(0, std::ios::beg); 
infile.read(buf.data(), filesize); // or &buf[0] on old compilers 

你的文件將被存儲在矢量buf。如果您只想讀取標題,則可以讀取較小的塊,而不是全部filesize,然後適當地處理它們。

0

通常,圖像的「元」是部分的固定大小。

讀取文件,使用istream::read和二進制模式到載體中。使用圖像格式規範,找到您需要的字段。

構建多字節整數一個字節的時間,而不是試圖投出的位置作爲整數和閱讀。這將幫助你解決Endianness的問題。