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

如果尝试创建大于19000 px的位图,则会出现错误:参数无效。我该如何解决?


System.Drawing.Bitmap myimage= new System.Drawing.Bitmap(20000, 20000);


慕村9548890
浏览 369回答 3
3回答

跃然一笑

19000像素正方形(32bpp)将需要11552000000位(1.37 GB)将栅格存储在内存中。这只是原始像素数据;System.Drawing.Bitmap中固有的任何其他额外开销都会增加。在相同的色深下,要达到2万像素正方形,仅原始像素内存就需要1.5GB。在单个对象中,您使用的是在32位环境中为整个应用程序保留的空间的3/4。64位环境通常具有较宽松的限制,但是您仍在使用单个对象最大大小的3/4。为什么需要如此大的图像尺寸?在计算机监视器上以1280x1024分辨率观看时,侧面19000像素的图像将是14个屏幕宽乘18个屏幕高。我只能想象您正在制作高质量的打印图形,在这种情况下,一张720dpi的图像将是一个26英寸的方形海报。

慕斯王

我怀疑您遇到了内存上限问题。但是,位图构造函数可能会失败的原因有很多。这篇知识库文章中列出了主要的内容,其中讨论了中的GDI +限制CreateBitmap。  System.Drawing.Bitmap,内部在构造位图时使用GDI本机API。话虽这么说,那种大小的位图恰好超过GB的RAM,很可能您已达到扫描线大小限制(64KB)或内存不足。
打开App,查看更多内容
随时随地看视频慕课网APP