GDI+ 中的一般错误
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 参数,所以很难说应该如何完成,如果它是您自己的库,我不明白你为什么需要 out 参数,因为位图无论如何都会被 Reference 传递)
我正在循环保存来自相机的图像,但有时在我使用 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 参数,所以很难说应该如何完成,如果它是您自己的库,我不明白你为什么需要 out 参数,因为位图无论如何都会被 Reference 传递)