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;
            }
        }