位图文件独立宽高最大限制与总像素分配规则咨询
.NET Bitmap 宽高与总像素的限制细节
针对你提出的问题,我来梳理一下.NET中Bitmap类的核心限制:
- 单个维度的硬上限:不管是宽度还是高度,最大有效值是32767像素,这个限制是单边的,和是否为正方形无关。不是说总像素不超过
32768×32768就可以自由调整宽高——只要宽或高中任意一个超过32767,这个Bitmap本质上是不符合GDI+(.NET Bitmap依赖的底层图形库)的有效规格的。 - 总像素的辅助限制:在单个维度都不超32767的前提下,总像素不能超过
2^31 - 1(也就是2147483647像素),不过这个上限在单维度不超的情况下,其实很难触发(32767×32767≈10.7亿,远小于21亿的总像素上限)。
关于你测试代码的解释
你写的这段代码:
Dim theBitmap as Bitmap = New Bitmap(450, 100000)
之所以没有立刻报错,是因为.NET的Bitmap构造函数没有在创建时做严格的维度校验,但这个Bitmap是无效的——后续的保存、渲染或者其他操作都会出现异常,这也是你遇到“结果不符合预期”的原因。
结论
如果要让Bitmap能正常工作,你需要确保宽度和高度都不超过32767像素,所以建议你把代码中的高度调整到这个范围内。
内容的提问来源于stack exchange,提问作者Tojanarm
相关产品推荐
相关产品推荐

