图像尺寸未加载

时间:2014-03-25 15:14:05

标签: c++

我正在寻找一种方法来获取磁盘上图像的宽度和高度,而无需将整个图像加载到内存中。

我需要支持BMP和PNG图像; TGA也不错。

我已经在使用DirectX11,DirectX工具包,CxImage和Boost库,所以使用其中一个库来实现它会很棒。但是,我也愿意使用另一个库

1 个答案:

答案 0 :(得分:4)

对于BMP,请读入bytes 18 through 21以获取宽度,读取字节22到25以获得高度。

对于PNG,请从文件的IHDR chunk中读取维度,该文件看起来是在文件的前八个字节之后开始的,以及header of the IHDR chunk itself的八个字节。字节16到19将给出宽度,字节20到23给出高度。

同样,对于TGA,您可以将first 18 bytes (with advised notes)读入TGA标头struct,然后取消引用结构实例的widthheight属性。< / p>

在C ++中,您可以使用标准C I / O(例如fopen() fseek()fread())来打开,移动和读取文件指针中的字节。您不必读取整个文件:只需移动到正确的字节偏移量,然后读入正确的字节数。