我最近使用C编写了一个程序,它使用一个非常简单的Spice Netlist(txt-file)作为输入,并根据网表绘制BMP-File(未压缩)。
绘制的每个组件的大小为100x51像素。因此输出BMP-File将始终具有51像素的固定高度,但长度是可变的。
我的问题:如何找出BMP文件的最大长度是多少?它似乎适用于超过32kx51的尺寸,在70kx51左右停止正常工作。
这是BMP Infoheader:
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;
答案 0 :(得分:4)
取决于实际的BMP格式,在经典' BMP宽度和高度存储在16位字段中,因此您不能拥有大于65535x65535像素的图像。这后来扩展到32位值,但根据您用来生成BMP的库,它可能只支持" classic"格式或您可能明确要求创建更新的BMP变体...
参见例如: