位图文件的最大尺寸是多少?

5
我想知道最大的位图宽度和高度是否独立。我找到了最大尺寸为32768x32768,但这是指一个完美的正方形吗?32768x32768 = 1,073,741,824是我可以使用的像素总数,只要总数不超过就可以在宽度和高度之间重新排列这些像素吗?
如果我这样做,不会出现任何错误:
Dim theBitmap as Bitmap = New Bitmap(450, 100000)
即使我无法打开保存后的图像(我不需要这样做),我仍然能够使用位图,但我相信有些地方不太对劲... 最终结果并没有得到预期的结果...
我所做的目的无关紧要。我只关心第一段中提到的问题的答案。如果答案是高度限制为32768,则我将相应地更改我的代码。谢谢!

2
相关内容:这里这里。还有这个 - A Friend
1
可能是什么是C# .NET Bitmap的最大分辨率?的重复问题。 - Nyerguds
@Nyerguds 确实非常相似。虽然链接的条目看起来非常相似,但它们从未涉及在一个维度上保持另一个维度在指定范围内的宽度/高度尺寸问题。我知道位图有总大小限制,但不清楚宽度或高度是否可以超过32k / 64k!不过还是谢谢你的建议 :) - Tojanarm
3个回答

2
我已经找到了我最初问题的答案。只要总尺寸不超过最大尺寸规格,您确实可以使用任何宽度和高度。您可能会在保存尺寸尴尬的情况下(例如1乘1000000)遇到问题,但如果您只需要操作位图,则确实可以处理这些情况。
感谢所有在评论部分做出贡献的人!

0

.bmp文件的大小受到uint32_t的最大大小限制,即4GB。

只要.bmp文件保持在4GB以下,任何尺寸都是可以接受的。

然而,并非所有的位图都是相同的。单色位图每像素只需要1个比特,并且使用稍微较小的调色板(总共8个字节),因此可以拥有比16色位图更多的像素数量(16色位图每像素需要4个比特,调色板需要64个字节)。

这并不考虑压缩,因为对于所有非单色位图,bmp文件允许进行压缩。


-1
PNG和JPEG在文件大小上没有明确的限制,而BMP有32K x 32K像素的限制,我认为这就是你在这里遇到的问题(一些地方声称它还可以容纳2Gx2G,但我找不到任何相关的信息)。

谢谢您的回复。我已经找到了限制大小,但是我想知道32kx32k是否只是总大小。计算机似乎并不在意位图是1x1,000,000(没有给出任何错误),但是当我处理位图时,最终结果是不正确的:( - Tojanarm
1
@Tojanarm:我认为像素数量比尺寸更重要。32,768 x 32,768 = 1,073,741,824,而1 x 1,000,000 = 1,000,000,远小于1,073,741,824 - Visual Vincent
@VisualVincent,你是对的。我在我的代码中发现了一个错误。虽然你无法保存这样奇怪的维度,但你仍然可以操作该位图。感谢你的回复! - Tojanarm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接