我正在寻找一种方法来获取磁盘上图像的宽度和高度,而无需将整个图像加载到内存中。
我需要支持BMP和PNG图像; TGA也不错。
我已经在使用DirectX11,DirectX工具包,CxImage和Boost库,所以使用其中一个库来实现它会很棒。但是,我也愿意使用另一个库
答案 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
,然后取消引用结构实例的width
和height
属性。< / p>
在C ++中,您可以使用标准C I / O(例如fopen()
fseek()
和fread()
)来打开,移动和读取文件指针中的字节。您不必读取整个文件:只需移动到正确的字节偏移量,然后读入正确的字节数。