【发布时间】:2017-07-03 14:41:47
【问题描述】:
所以我有这个 TIFF,压缩率为 32946,即 COMPRESSION_DEFLATE。
我正在手读:
ifstream istream;
std::string line;
TIFHEAD header;
istream.open("pic.tif",ios::binary|ios::in);
istream.read((char*)&header, sizeof(TIFHEAD));
istream.seekg(header.IFDOffset);
WORD numEntries1;
istream.read((char *)&numEntries1, sizeof(WORD));
cout<<numEntries1<<endl;
DWORD tagOffset;
DWORD stripByte;
for(int i=0; i<numEntries1; i++) {
TIFTAG tag;
istream.read((char *)&tag, sizeof(TIFTAG));
}
并找到所有 TIFF 十六进制值。
我现在有一个值 data3.txt,其中包含来自 hexdump 的所有十六进制值。 Here 粘贴到文档中:
到目前为止,这是我的 zlib 代码,对于大部分数据,它都能正确打印(出于某种原因,在中途,它开始重复打印 000 和换行符,然后进入非 ASCII 字符)。
int main(int argc, char **argv) {
gzFile inFileZ = gzopen("data3.txt", "rb");
unsigned char unzipBuffer[4];
uint8_t unzippedBytes;
while (true) {
unzippedBytes = gzread(inFileZ, unzipBuffer, 4);
std::cout<<std::hex<<unzipBuffer<<std::endl;
z_stream stream;
stream.next_in = unzipBuffer;
inflate(&stream, 1);
std::cout<<stream.next_in<<std::endl;
}
gzclose(inFileZ);
}
第二个打印出来的东西部分是值,部分是非ASCII字符。这是为什么呢?
如果不清楚,我的最终目标是手动读取每个像素都有浮点数的 TIFF。我只想得到所有这些花车。
编辑:此外,即使 data3.txt 仅包含 12 个字符,也存在无限循环。为什么?
【问题讨论】:
标签: c++ zlib ifstream tiff inflate