1

アップロードされた画像のサイズを変更し、既存のファイルを置き換えて特定の場所に保存しようとしています。しかし、これにより、「別のプロセスで使用されているため、プロセスはファイル '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を削除したい場合、同じ問題が発生します。どんな助けでも大歓迎です。ありがとう

4

1 に答える 1

2

解決策を見つけました。すべてのオブジェクトと、画像が使用されている画像ボックスを破棄します。同じコントロールで使用されているか、別のコントロールで使用されているか。イメージが変更されるたびに、メイン コントロールでピクチャ ボックス コントロールを再作成します。私にとっては完璧に機能します。

これが役に立つことを願っています。

ハッピーコーディング

于 2013-04-09T10:29:09.930 に答える