为了账号安全,请及时绑定邮箱和手机立即绑定

C#“参数无效。”创建新的位图

C#“参数无效。”创建新的位图

C#
慕村9548890 2019-11-03 04:04:46
如果尝试创建大于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英寸的方形海报。



查看完整回答
反对 回复 2019-11-04
?
慕斯王

TA贡献1864条经验 获得超2个赞

我怀疑您遇到了内存上限问题。但是,位图构造函数可能会失败的原因有很多。这篇知识库文章中列出了主要的内容,其中讨论了中的GDI +限制CreateBitmap。  System.Drawing.Bitmap,内部在构造位图时使用GDI本机API。


话虽这么说,那种大小的位图恰好超过GB的RAM,很可能您已达到扫描线大小限制(64KB)或内存不足。



查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 368 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信