【问题标题】:Max resolution of .bmp file format.bmp 文件格式的最大分辨率
【发布时间】:2015-06-19 14:44:53
【问题描述】:

我制作了一个 Mandelbrot 分形生成器(我知道谁没有),它可以直接渲染到磁盘以生成巨大的分形。

我的第一个测试是 UHD 4k 分辨率,结果非常好(所有这些示例都是 8 位颜色)。所以我决定有点疯狂,在两个维度上都增加了 10 倍,即 38400 x 21600。生成的文件似乎无效,因为 Photoshop 无法打开它,但即使在 Windows 资源管理器中查看文件属性也显示尺寸/等丢失。

我认为限制有可能是 32768,所以我尝试通过做 30000 x 30000 来达到这个限制。这似乎仍然无效。

降低到 10000 x 10000 可以正常工作,所以我想知道文件格式的限制是什么?

文件大小应该不是问题,因为即使 10x4k 分辨率的文件小于 1GB。

【问题讨论】:

  • 我刚刚尝试了一个 23040 x 4320 位图,它可以为我提供一个图像以跨越我的 2x AA 的三重高清桌面,并且它可以工作,因此限制介于 30k x 30k 和 30k x 30k 之间
  • 这将取决于您的图像查看器的限制(除了标题大小字段)以及您可用的内存量。一个 8 位图像大小 32000x32000 将需要大约 1GB 内存。
  • 我知道这一点,但格式存在一个根本问题,这意味着没有正确读取标题以报告文件格式。无论如何,我使用的机器有 32GB,所以内存不是问题。而且用于编写 bmp 的代码是逐行执行的,因此所需的内存也少得多。
  • 我一直在玩制作 8 位调色板 .bmp 图像。尺寸 16000 x 16000 被 MS Paint 拒绝,但被paint.net 和普通观众(相机制造商提供的 ULead)接受。我刚刚尝试了paint.net拒绝的32000 x 32000,并且Ulead识别(具有正确的尺寸),但只会显示在缩略图中。 Win7 4Gb。
  • 有趣。我认为 Photoshop 会打开几乎所有有效的东西。您是否可以尝试使用 32k x 32k 文件?如果它有效,那么我的代码编写标题可能有问题。出于兴趣,您使用的是哪个版本的 bmpheader?

标签: windows bitmap limit fractals mandelbrot


【解决方案1】:

看起来 BMP 的最大尺寸可以是 32Kx32K 和 2Gx2G 像素。这是我找到的链接.. http://www.fileformat.info/format/bmp/egff.htm

【讨论】:

  • 是的,我也发现了,但这不是我的测试显示的。正如我在上面的帖子中提到的,我尝试了 30k x 30k,但它不起作用。
  • 试试通常的 -1 技巧,让它变成 29999x29999 :-) 或者更小一些,当然。
【解决方案2】:

我不知道为什么,但是 Windows 位图的最大尺寸是 32768x32768 像素。我记得,它们实际上是在 Windows 1.0 之前开发的。我记得看到的第一个官方文档是在 Windows 3.1 发布之后。他们当时可能认为这大得离谱:) 两个参数都定义为 DWORD(32 位整数)。宽度参数是无符号的,高度参数是有符号的(负数反转图像)。

【讨论】:

    【解决方案3】:

    限制应该是标头中的 dword(32 位)条目:在 0x02 文件大小(如果您使用压缩:在 0x12 x-max,在 0x16 y-max)

    (假设 0x22 数据字节 % 4 == 0 处的条目)

    我在使用自行生成的文件时遇到了类似的问题:24284 x 24464 像素 (594.08 MPixels)。 Win10文件资源管理器没有显示任何大小或深度,xnview、gimp、paint、ppt、internet-explorer、edge、chrome都没有。

    firefox 显示图片一小会儿,然后切换到显示一个黑框。

    唯一有效的程序是 irfanview。

    (希望这是一个有效的答案 - 因为我似乎无法评论)

    【讨论】:

    • 从技术上讲,此响应不是答案。请考虑将其作为对原始问题或已接受答案的评论重新发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多