2013-04-09 3 views
1

i m пытается изменить размер загруженного изображения и сохранить его в определенном месте, заменив существующий файл. Но это приводит к ошибке: «Процесс не может получить доступ к файлу« 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(); 
      } 

Incase Я хочу, чтобы удалить Photo.jpg с помощью функции File.Delete, это дает мне тот же вопрос. Любая помощь будет оценена по достоинству. Thanx

ответ

2

Обнаружено решение. Утилизируйте все объекты и поля для изображений, в которых используется изображение. Используется ли он в том же контроле или другом управлении. Во время изменения изображения восстанавливайте управление ящиком изображения в главном элементе управления. Прекрасно подходит для меня.

Надеюсь, это полезно.

Счастливое кодирование

Смежные вопросы

 Смежные вопросы