【问题标题】:Image Dimensions without loading未加载的图像尺寸
【发布时间】:2014-03-25 15:14:05
【问题描述】:

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

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

我已经在使用 DirectX11、DirectX 工具包、CxImage 和 Boost 库,因此使用其中一个库来做这件事会很棒。但是,我也愿意使用另一个库

【问题讨论】:

  • 你在这里看过这个答案吗?这似乎是相同的上下文。 stackoverflow.com/a/5354657/1484168
  • @stefan 是的,它本来是要发表评论的。感谢您的转换
  • 感谢@iRebel_85,这有助于实施

标签: c++


【解决方案1】:

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

对于 PNG,从文件的 IHDR chunk 读取尺寸,它看起来在文件的前 8 个字节和 header of the IHDR chunk itself 的 8 个字节之后开始。字节 16 到 19 给出宽度,字节 20 到 23 给出高度。

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 1970-01-01
  • 2019-07-08
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
相关资源
最近更新 更多