0

我有一个 winform 应用程序,其中有一个显示相当大图像 (2550by4500) 的图片框。此位图图像是使用不安全指针从字节数组转换而来的,如下所示:

     Bitmap img;   
     unsafe
     {
         fixed (Byte* intPtr = &outBuffer[0])
         img = new Bitmap(_width, _height, _width * 3, System.Drawing.Imaging.PixelFormat.Format24bppRgb, new IntPtr(intPtr));
     }

到目前为止,没有任何问题。显示图像后,我使用此 DLL ( http://www.mathworks.com/matlabcentral/fileexchange/16319 )将像素值保存到 Matlab .mat 文件中。不过,保存没有问题。

然而,pictureBox 中的图像变得像一张嘈杂的黑白图像,原始图像完全丢失了。

我尝试过的事情:

  1. 在监视窗口中添加了位图,发现像素值都发生了变化。位图已损坏。
  2. 每次保存后再次进行不安全的转换,但是,它带来了另一个问题:“Drawing.dll中的AccessViolationException”。

一定与 .mat 保存部分有关,因为如果我跳过保存,完全没有问题。但是不知道它们是怎么关联的,内存?我尝试了较小尺寸的图像,没问题。所以我假设“保存.mat”过程损坏了位图?

任何想法都会有所帮助!谢谢

4

0 回答 0