我正在处理需要大量图像处理的问题, 我使用C#WPF进行GUI,并使用C ++ GPU加速DLL支持图像处理。 我喜欢保持界面不变并使用指针,GUI只是用于上传和下载图像。 但是,我遇到了System.Drawing的问题,这似乎是由大尺寸引起的。
srcImage = (Bitmap)Bitmap.FromStream(ms,
/*useEmbeddedColorManagement*/true,
/*validateImageData*/ false); // would throw "System.Overflowexception" if set to 'true',
//but doesn't seem to actually load Bitmap to RAM when set to 'false'
int width = srcImage.Width;
int height = srcImage.Height;
// LockBits throws "System.Overflowexception"
BitmapData srcImageData = srcImage.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, srcImage.PixelFormat);
uint* ptr = (uint*)srcImageData.Scan0;
ExternalCPPCall(ptr, height, width);
srcImage.UnlockBits(srcImageData);
图像高度x宽度
另请注意 - ' ms' MemoryStream包含从磁盘读取的PNG(通常比生成的BMP小1000倍)
是GDI +支持System.Drawing 32位库吗?我正在编译并运行64位,我的整个过程突然显示10GB的使用情况