c - 位图最大尺寸

标签 c max bmp dimension

我最近用 C 编写了一个程序,它以一个非常简单的 Spice 网表(txt 文件)作为输入,并根据网表绘制一个 BMP 文件(未压缩)。

绘制的每个组件的大小为 100x51 像素。所以输出的 BMP 文件将始终具有 51 像素的固定高度,但长度是可变的。

我的问题:如何找出 BMP 文件的最大长度?它似乎适用于超过 32kx51 的尺寸,在 70kx51 左右停止正常工作。

这是 BMP 信息头:

typedef struct
{
  uint32_t bi_Size_;
  int32_t bi_Width_;
  int32_t bi_Height_;
  uint16_t bi_Planes_;
  uint16_t bi_Bit_Count_;
  uint32_t bi_Compression_;
  uint32_t bi_Size_Image_;
  int32_t bi_X_Pels_Per_Meter_;
  int32_t bi_Y_Pels_Per_Meter_;
  uint32_t bi_Clr_Used_;
  uint32_t bi_Clr_Important_;
}__attribute__((__packed__)) BitMapInfoHeader;

最佳答案

取决于实际的 BMP 格式,在“经典”BMP 中,宽度和高度存储在 16 位字段中,因此您不能拥有大于 65535x65535 像素的图像。这后来扩展到 32 位值,但是根据您用来生成 BMP 的库,它可能只支持“经典​​”格式,或者您可能必须明确要求创建更新的 BMP 变体 ...

另见例如:

http://en.wikipedia.org/wiki/BMP_file_format

关于c - 位图最大尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27440931/

相关文章:

ios - CoreBluetooth 上的最大外围设备数量?

多行的 SQL Min 和 Max

java - 为什么 ImageIO 在将 BMP 文件重新保存到 MS Paint 中之前不读取它?

macos - 确定 os x 上 bmp 文件的位深度

c - 返回数组的函数(用 C 编写的 Win32 控制台应用程序,学习操作系统)

c - getpeername函数的理解

java - 在模板类中使用 <limits.h>> 中的最大值

opencv - 在 C 中访问索引图像的调色板

c - 使用 gcc 优化 -mavx 失败?

c - 如何检测 FreeRTOS 中的内存泄漏