我正在通过c ++进行图像处理,我必须以char格式读取jpeg图像的标题,我必须检查图像的相机/系统/设备信息,我该怎么做。
答案 0 :(得分: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
的所有块,并对其进行适当的处理。
答案 1 :(得分:0)
一般来说,&#34; meta&#34;图像部分是固定大小。
使用istream::read
和二进制模式将文件读入矢量。使用图像格式规范,找到所需的字段。
每次一个字节构建多字节整数,而不是尝试将位置转换为整数和读取。这将帮助您克服Endianness的问题。