如果尝试创建大于19000 px的位图,则会出现错误:参数无效。我该如何解决?System.Drawing.Bitmap myimage= new System.Drawing.Bitmap(20000, 20000);
3 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
19000像素正方形(32bpp)将需要11552000000位(1.37 GB)将栅格存储在内存中。这只是原始像素数据;System.Drawing.Bitmap中固有的任何其他额外开销都会增加。在相同的色深下,要达到2万像素正方形,仅原始像素内存就需要1.5GB。在单个对象中,您使用的是在32位环境中为整个应用程序保留的空间的3/4。64位环境通常具有较宽松的限制,但是您仍在使用单个对象最大大小的3/4。
为什么需要如此大的图像尺寸?在计算机监视器上以1280x1024分辨率观看时,侧面19000像素的图像将是14个屏幕宽乘18个屏幕高。我只能想象您正在制作高质量的打印图形,在这种情况下,一张720dpi的图像将是一个26英寸的方形海报。
慕斯王
TA贡献1864条经验 获得超2个赞
我怀疑您遇到了内存上限问题。但是,位图构造函数可能会失败的原因有很多。这篇知识库文章中列出了主要的内容,其中讨论了中的GDI +限制CreateBitmap。 System.Drawing.Bitmap,内部在构造位图时使用GDI本机API。
话虽这么说,那种大小的位图恰好超过GB的RAM,很可能您已达到扫描线大小限制(64KB)或内存不足。
- 3 回答
- 0 关注
- 368 浏览
添加回答
举报
0/150
提交
取消