文件已被其他进程使用。保存文件

时间:2015-05-11 09:03:03

标签: c# asp.net image-processing tiff

我有文件处理器从tiff文件中提取缩略图和大图像。

但我得到“文件已在使用”“GDI +中出现一般错误”错误最常见。

有三个基本功能:

  1. 获取tiff页数
  2. 获取所有缩略图
  3. 获取所有大图片
  4. 文件流用于所有三个操作。

    有没有办法可以使用文件流一次,将文件的副本保存在内存中并释放文件供其他用途。

    我试过了:

    using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.ReadWrite))
    {
        photo = Image.FromStream(fs, true, false);                                
        fs.Flush();
        fs.Close();                                
    }
    
    using (photo)
    {
        //dummy hight and width passed to function.
        generateThumbNails(photo,1,90,90);
        System.Drawing.Imaging.FrameDimension dimention = new FrameDimension(photo.FrameDimensionsList[0]);
        total = photo.GetFrameCount(dimention);
        photo.Dispose();
    }
    

    generateThumbNails函数:

    public static Bitmap GenerateThumbNails(System.Drawing.Image img, int curPageNo, int width, int height)
    {
        System.Drawing.Imaging.FrameDimension dimention = new FrameDimension(img.FrameDimensionsList[0]);
        img.SelectActiveFrame(dimention, curPageNo);
    
        Bitmap bmp = new Bitmap(width, height);
        Graphics g = Graphics.FromImage(bmp);
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        g.DrawImage(img, 0, 0, width, height);
        g.Dispose();
        return bmp;  
    }
    

    但是我在下一行重新调整图像大小时得到“GDI +中发生了一般错误”

    g.DrawImage(img, 0, 0, width, height);
    

0 个答案:

没有答案