【问题标题】:Bitmap maximum dimensions位图最大尺寸
【发布时间】:2014-12-12 09:51:14
【问题描述】:

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

绘制的每个组件的大小为 100x51 像素。所以输出的 BMP-File 将始终具有 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;

【问题讨论】:

    标签: c max bmp dimension


    【解决方案1】:

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

    参见例如:

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

    【讨论】:

    • 如果我不使用库怎么办?
    • 那您需要确保生成的是 BITMAPINFOHEADER 变体,而不是旧的 BITMAPCOREHEADER?
    • 我添加了我们使用的 BMP 文件头结构,我想我们使用 u_int32_t 作为宽度
    猜你喜欢
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    相关资源
    最近更新 更多