Winform项目中在Debug文件夹下有一个“ZP.bmp”,要把它读到Picturebox(Pic_Identity_BM)中。
读取方式:
FileStream fsReadPic = new FileStream("zp.bmp", FileMode.Open, FileAccess.Read);
Bitmap bmTemp = new Bitmap(fsReadPic);
Pic_Identity_BM.Image = bmTemp;
fsReadPic.Close();可是这样读到Picturebox之后(Picturebox中可以显示图片),再从中读取出来转为”byte[]“存入数据库时:
byte[] IDimg = CS_Common.ReadPicBox.ImageDatabytes(bitmap);
if (IDimg.ToString() != "")
{
m_pxryinfo.IDimg = IDimg;
}
else
{
m_pxryinfo.IDimg = CS_Common.IDimgNull.IDimgNull.imgNull();
}问题一:IDimg对象为空为什么会是空呢???如果换种从本地读取图片的方式,Pic_Identity_BM.Image = Image.FromFile("zp.bmp");这样来读取,可以用“byte[] IDimg = CS_Common.ReadPicBox.ImageDatabytes(bitmap);”存入数据库中,也可以正常显示。
但是这样不能连续读取,连续读取出现错误:“内存被保护或内存被损坏"问题二:请问这两种读取图片的方式有什么不同?为什么一个正常,另一个却正常???
问题三:为什么一个可以连续读取,一个却不可以???public static byte[] ImageDatabytes(Bitmap myBitmap)
{
try
{
using (MemoryStream curImageStream = new MemoryStream())
{
myBitmap.Save(curImageStream, System.Drawing.Imaging.ImageFormat.Png);
curImageStream.Flush();
byte[] bmpBytes = curImageStream.ToArray();
return bmpBytes;
}
}
catch
{
return null;
}
}
读取方式:
FileStream fsReadPic = new FileStream("zp.bmp", FileMode.Open, FileAccess.Read);
Bitmap bmTemp = new Bitmap(fsReadPic);
Pic_Identity_BM.Image = bmTemp;
fsReadPic.Close();可是这样读到Picturebox之后(Picturebox中可以显示图片),再从中读取出来转为”byte[]“存入数据库时:
byte[] IDimg = CS_Common.ReadPicBox.ImageDatabytes(bitmap);
if (IDimg.ToString() != "")
{
m_pxryinfo.IDimg = IDimg;
}
else
{
m_pxryinfo.IDimg = CS_Common.IDimgNull.IDimgNull.imgNull();
}问题一:IDimg对象为空为什么会是空呢???如果换种从本地读取图片的方式,Pic_Identity_BM.Image = Image.FromFile("zp.bmp");这样来读取,可以用“byte[] IDimg = CS_Common.ReadPicBox.ImageDatabytes(bitmap);”存入数据库中,也可以正常显示。
但是这样不能连续读取,连续读取出现错误:“内存被保护或内存被损坏"问题二:请问这两种读取图片的方式有什么不同?为什么一个正常,另一个却正常???
问题三:为什么一个可以连续读取,一个却不可以???public static byte[] ImageDatabytes(Bitmap myBitmap)
{
try
{
using (MemoryStream curImageStream = new MemoryStream())
{
myBitmap.Save(curImageStream, System.Drawing.Imaging.ImageFormat.Png);
curImageStream.Flush();
byte[] bmpBytes = curImageStream.ToArray();
return bmpBytes;
}
}
catch
{
return null;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货