有效处理超宽但不高的位图?

Eri*_*son 5 c# memory-management bitmap

有没有办法创建更多空间/资源有效的位图?目前我尝试渲染一个文件,大约800px高,但大约720000px宽.它崩溃了我的应用程序,可能是因为位图的共享内存大小.

我可以更有效地执行此操作,例如直接将其创建为gif,而不是稍后保存它吗?

我尝试从现实世界的阅读中保存一系列线条/矩形,我希望它是每1/100秒1px.

Pau*_*sik 14

你必须记住你加载到内存中的任何图像,无论它是GIF还是JPEG或者磁盘上的任何内容,都会变成32位位图,这意味着每个像素有4个字节.

这意味着您正在创建的图像将是:

4 bytes * 800 pixels high * 720,000 pixels wide = 2,304,000,000 bytes
Run Code Online (Sandbox Code Playgroud)

你通过尝试创建一个大的图像基本上是在吹嘘你的记忆.

无论你想要完成什么,答案都是平铺和缓存你的形象.


Row*_*haw 2

你必须:

  • 强制 x64 环境并获取 RAM 的堆栈负载。

  • 改变你的架构

您的映像将略高于 2 GB。