Kac*_*che 6 c++ metadata image filestream endianness
我有来自图像文件的原始数据流,例如:
vector<char> rawData(fileSize);
ifstream inFile("image.jpg");
inFile.read(&rawData[0]);
Run Code Online (Sandbox Code Playgroud)
我想解析不同图像格式的标题高度和宽度.是否有一个可以从缓冲区/流中读取整数,长整数,短路等的可移植库,转换为指定的字节顺序?
我希望能够做类似的事情:short x = rawData.readLeShort(offset);或long y = rawData.readBeLong(offset)
更好的选择是可以处理原始图像数据的轻量级和便携式图像元数据库(没有图像处理库的额外重量).我发现那里的Exif库不支持png和gif.
自己做起来并不难。以下是读取小尾数 32 位数字的方法:
unsigned char buffer[4];
inFile.read(buffer, sizeof(buffer));
unsigned int number = buffer[0] +
(buffer[1] << 8) +
(buffer[2] << 16) +
(buffer[3] << 24);
Run Code Online (Sandbox Code Playgroud)
并读取大端 32 位数字:
unsigned char buffer[4];
inFile.read(buffer, sizeof(buffer));
unsigned int number = buffer[3] +
(buffer[2] << 8) +
(buffer[1] << 16) +
(buffer[0] << 24);
Run Code Online (Sandbox Code Playgroud)