FileStream fs = null;
 if (File.Exists(Application.StartupPath + "/BMPOutput/ScanRaw.jpg"))
            {
                // bigImage = Image.FromFile(Application.StartupPath + "/BMPOutput/ScanRaw.jpg");                
                //将扫描扫描图片复制到指定文件夹中
                string pasth = Application.StartupPath + "\\ImageZhengJian\\" + DateTime.Now.ToString("yyyyMMdd");
                File.Copy(Application.StartupPath + "/BMPOutput/ScanRaw.jpg", Application.StartupPath + @"/ImageZhengJian/" + System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".jpg", true);
                fs = new FileStream(Application.StartupPath + @"/BMPOutput/ScanRaw.jpg", FileMode.OpenOrCreate, FileAccess.Read);
                //将图片保存到数据库字段中
                scanImage = new byte[fs.Length];
                fs.Read(scanImage, 0, System.Convert.ToInt32(fs.Length));
                bigImage = Image.FromStream(fs);
                showImage = bigImage;                fs.Close();
这是小弟用到的 复制文件然后下面的picpaizhao.Image.Save 是保存 picpaizhao.Image.Save(path + "\\" + ZJZhao + ".jpg");
为什么 我上面复制文件用到 FileStream  里 fs.Close() 保存的时候 picpaizhao.Image.Save(path + "\\" + ZJZhao + ".jpg");
         报 GDI+ 中发生一般性错误。
去掉fs.Close()  就不会报错  求解释 如果不用fs.Close()  会被别的地方有影响不? 我好多地方都用到FileStream  

解决方案 »

  1.   

    那不加对别的地方有没有影响呢?
    fs.Close() 
      

  2.   


    你这里的scanImage没有用到,怀疑是超错误了别人的代码了。估计别人的代码是把scanImage放到一个 MemoryStream里边然后交给Image.FromStream吧?!
      

  3.   


    我刚看了看我代码 是在两个不同的方法里的  FileStream fs = null;
     if (File.Exists(Application.StartupPath + "/BMPOutput/ScanRaw.jpg"))
                {
                    // bigImage = Image.FromFile(Application.StartupPath + "/BMPOutput/ScanRaw.jpg");                
                    //将扫描扫描图片复制到指定文件夹中
                    string pasth = Application.StartupPath + "\\ImageZhengJian\\" + DateTime.Now.ToString("yyyyMMdd");
                    File.Copy(Application.StartupPath + "/BMPOutput/ScanRaw.jpg", Application.StartupPath + @"/ImageZhengJian/" + System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".jpg", true);
                    fs = new FileStream(Application.StartupPath + @"/BMPOutput/ScanRaw.jpg", FileMode.OpenOrCreate, FileAccess.Read);
                    //将图片保存到数据库字段中
                    scanImage = new byte[fs.Length];
                    fs.Read(scanImage, 0, System.Convert.ToInt32(fs.Length));
                    bigImage = Image.FromStream(fs);
                    showImage = bigImage;                fs.Close();这个方法关闭了  可是我要在picpaizhao.Image.Save(path + "\\" + ZJZhao + ".jpg");
    的时候怎么用FileStream fs = null;?  我怎么感觉用不到呢? 怎么弄啊
      

  4.   

    理论上说,对fs的引用没了,fs自然就会关闭,无需手动去关闭,这里的Image需要对fs的引用,所以你提早关闭fs就会出问题。
      

  5.   


    这些用到的  scanImage是存到数据库里的 这个是扫描仪里的