【发布时间】:2013-08-14 17:26:01
【问题描述】:
我尝试了许多解决方案来删除 GDI + 中发生的一般错误,但没有任何东西对我有用,我发布了我使用过的代码。此错误发生在服务器机器中
图像字节已成功存储在数据库中,但未在 PictureBox 上检索。
第一种方法:
ODetail.InsuranceCardImages 包含来自数据库的 字节 图像。
pcinsurance 是我的图片框
System.Byte[] imagefront = (byte[])oDetail.InsuranceCardImage;
//this.pcInsurance.Image = Utility.byteArrayToImage(oDetail.InsuranceCardImage);
MemoryStream ms = new MemoryStream(imagefront);
try
{
//Process currentProcess1 = Process.GetCurrentProcess();
Image returnImage = Image.FromStream(ms);
pcInsurance.Image= returnImage;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
try
{
ms.Flush();
ms.SetLength(0);
ms.Close();
ms.Dispose();
ms = null;
//GC.Collect();
}
catch
{
}
}
第二种方法:
pcinsurance 是我的图片框
byte[] byteArray = oDetail.InsuranceCardImage;
var imageStream = new MemoryStream(byteArray);
var image = (Bitmap)Bitmap.FromStream(imageStream);
pcInsurance.Image = image;
仍然无法解决这个问题,
请提供您的解决方案,以便我继续我的工作
谢谢。
【问题讨论】:
-
你的意思是第二种方法也会报错吗?你用第二种方法处理内存流吗?
-
是的第二种方法也给出了错误。不,我没有在第二种方法上处理内存流
-
尝试将 MemoryStream 从方法移动到类字段,我猜 GC 会在渲染时处理它...
-
我已经试过了。这就是我评论这条 GC 行的原因。
-
我的意思是在第二种方法中,第一种方法不起作用,因为您无法处理某些位图正在使用的流......很清楚为什么第一种方法不起作用......您是否尝试使用第二种方法并将流作为字段移到外部?
标签: c# .net image visual-studio-2010 gdi