[英]Generic error in GDI+
我正在循环保存来自摄像机的图像,但有时在某些系统中使用i7 4gb ram时,它会在gdi +中产生一般错误,而在使用i3 4gnb ram系统时会出现错误
for (int i = 1; i <= frameno; i++)
{
Bitmap bm = new Bitmap(1024,1280);
Int32 s32MemID;
Camera.Memory.GetActive(out s32MemID);
Camera.Memory.CopyToBitmap(s32MemID, out bm);
bm.RotateFlip(RotateFlipType.Rotate90FlipNone);
String str = "";
if (i < 10)
{
str = "00";
}
else if (i < 100)
{
str = "0";
}
bm.Save(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\capture" + str + i + ".bmp", ImageFormat.Bmp);
Thread.Sleep(delay);
}
请有人给我解决方案对我来说是非常重要的
我猜想通过一些重构,可以通过使用例如以下代码使其对内存更友好:
Int32 s32MemID;
Bitmap bm;
string targetPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
for (int i = 1; i <= frameno; i++)
{
try
{
Camera.Memory.GetActive(out s32MemID);
Camera.Memory.CopyToBitmap(s32MemID, out bm);
bm.RotateFlip(RotateFlipType.Rotate90FlipNone);
bm.Save(Path.Combine(targetPath, "capture" + (i.ToString().PadLeft('0', 3)) + ".bmp"), ImageFormat.Bmp);
}
finally
{
if (bm != null)
{
bm.Dispose();
bm = null;
}
}
Thread.Sleep(delay);
}
通常,我会建议使用模式,但是由于您没有展示Camera.Memory.CopyToBitmap
方法如何处理out Bitmap参数,因此很难说出应该如何做,如果它是您自己的lib,我看不到为什么需要out参数,因为无论如何位图都会通过Reference传递)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.