我正在試驗讀取PNG文件的寬度和高度。 這是我的代碼:讀取PNG文件頭的寬度和高度
struct TImageSize {
int width;
int height;
};
bool getPngSize(const char *fileName, TImageSize &is) {
std::ifstream file(fileName, std::ios_base::binary | std::ios_base::in);
if (!file.is_open() || !file) {
file.close();
return false;
}
// Skip PNG file signature
file.seekg(9, std::ios_base::cur);
// First chunk: IHDR image header
// Skip Chunk Length
file.seekg(4, std::ios_base::cur);
// Skip Chunk Type
file.seekg(4, std::ios_base::cur);
__int32 width, height;
file.read((char*)&width, 4);
file.read((char*)&height, 4);
std::cout << file.tellg();
is.width = width;
is.height = height;
file.close();
return true;
}
如果我嘗試從this image from Wikipedia例如閱讀,我得到這些錯誤的價值觀:
252097920(應爲800)
139985408(應600)
請注意,函數是而不是返回false s o寬度和高度變量的內容必須來自文件。
爲你+1,它現在的作品!這只是爲了學習; – ComFreek