teo*_*omi 31 c# size parameters bitmap
如果我尝试创建一个大于19000像素的位图,我会收到错误:参数无效.我该如何解决这个问题?
System.Drawing.Bitmap myimage= new System.Drawing.Bitmap(20000, 20000);
Run Code Online (Sandbox Code Playgroud)
Zha*_*ais 34
请记住,这是您尝试使用该位图分配的大量内存.
请参阅http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/37684999-62c7-4c41-8167-745a2b486583/
.NET很可能拒绝创建一次占用大量连续内存的映像.
稍微难以阅读,但这个参考也有帮助:
系统中的每个图像都具有此公式定义的内存量:
bit-depth * width * height / 8这意味着图像40800像素乘4050将需要超过660兆字节的内存.
19000像素的正方形,32bpp,需要11552000000位(1.37 GB)才能将光栅存储在内存中.那只是原始像素数据; System.Drawing.Bitmap中固有的任何额外开销都会增加.在相同颜色深度上达到20k像素的正方形,仅需要1.5GB的原始像素存储器.在单个对象中,您在32位环境中使用为整个应用程序保留的3/4空间.64位环境具有更宽松的限制(通常),但您仍然使用单个对象的最大大小的3/4.
你为什么需要如此庞大的图像尺寸?在计算机显示器上观看1280x1024 res,一侧19000像素的图像宽14屏,高18屏.我只能想象你正在制作高质量的印刷图形,在这种情况下720dpi的图像将是26"方形的海报.
小智 5
新建位图时设置PixelFormat,例如:
new Bitmap(2000, 40000,PixelFormat.Format16bppRgb555)
Run Code Online (Sandbox Code Playgroud)
而上面的确切数字对我有用。这可以部分解决问题。