2013-04-09 94 views
1

我尝试调整上传的图像的大小并通过替换现有文件将其保存在特定位置。但是这给了我一个错误:“进程无法访问文件'C:\ Photo.jpg',因为它正在被另一个进程使用。”该进程无法访问文件'C: Photo.jpg',因为它正在被另一个进程使用

这是我的代码。

private void llblChangePlayerPicture_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
     { 
      ofdPlayerPicture.Reset(); 
       ofdPlayerPicture.Filter = "JPEG(*.jpeg,*.jpg)|*.jpeg;*.jpg|Bitmap (*.bmp)| *.bmp |PNGs(*.png)|*.png"; 
       ofdPlayerPicture.ShowDialog(); 
       Image newImage; 
       if (ofdPlayerPicture.FileName != "") 
       { 
        pboPlayerPicture.Image = null; 
        pboPlayerPicture.ImageLocation = null; 
        newImage = Resize(Image.FromFile(ofdPlayerPicture.FileName), new Size(250, 100)); 
        SaveJpeg(Program.playerImagePath + regNo + "\\Photo1.jpg", newImage, 100); 
       } 

这里是我保存图像

public static void SaveJpeg(string path, Image img, int quality) 
      { 
       EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality); 
       ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg"); 
       EncoderParameters encoderParams = new EncoderParameters(1); 
       encoderParams.Param[0] = qualityParam; 
       System.IO.MemoryStream mss = new System.IO.MemoryStream(); 
       System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Create, System.IO.FileAccess.ReadWrite); 
       img.Save(mss, jpegCodec, encoderParams); 
       byte[] matriz = mss.ToArray(); 
       fs.Write(matriz, 0, matriz.Length); 

       mss.Close(); 
       fs.Close(); 
       mss.Dispose(); 
       fs.Dispose(); 
      } 

柜面我想用File.Delete功能删除Photo.jpg,它给了我同样的问题。任何帮助,将不胜感激。 Thanx

回答

2

找到解决方案。处理所有对象以及使用图像的图片框。无论是用于相同的控制还是不同的控制。每次更改图像时,都会在主控件中重新创建图片框控件。对我来说工作得很好。

希望这是有用的。

快乐编码

相关问题