没有加载的图像尺寸

Image Dimensions without loading

本文关键字:图像 加载      更新时间:2023-10-16

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

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

我已经在使用DirectX11, DirectX工具箱,CxImage和Boost库,所以用这些库中的一个来做这件事会很好。但是,我也愿意使用另一个库

对于BMP,读取第18到21个字节来获得宽度,读取第22到25个字节来获得高度。

对于PNG,从文件的IHDR块中读取尺寸,该块看起来从文件的前八个字节和IHDR块本身的头的八个字节之后开始。第16到19个字节表示宽度,第20到23个字节表示高度。

同样,对于TGA,你可以读入前18个字节(有建议的注释)到TGA头struct,然后解引用结构实例的widthheight属性。

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