我正在通过c ++进行图像处理,我必须以char格式读取jpeg图像的标题,我必须检查图像的相机/系统/设备信息,我该怎么做。
问问题
309 次
2 回答
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
您的文件将存储在 vector 中buf
。如果您只想读取标头,则可以读取较小的块,而不是全部filesize
,并适当地处理它们。
于 2011-10-23T20:48:42.437 回答
0
通常,图像的“元”部分是固定大小的。
读取文件,使用istream::read
和二进制模式成向量。使用图像格式规范,找到您需要的字段。
一次构建一个字节的多字节整数,而不是尝试将位置转换为整数并读取。这将帮助您克服字节顺序问题。
于 2011-10-23T22:58:47.377 回答