반응형
Image 객체에 파일을 불러온후 파일을 삭제할 경우 다른 프로세스 사용하고 있어 삭제할수 없는 오류가 뜬다.
아래 소스를 참고하자.
string sfileName = @"D:\data\001.jpg";
string tfileName = @"D:\data\001_bak.jpg";
Image source = Image.FromFile(sfileName );
Bitmap bitmap = new Bitmap(source);
Graphics g = Graphics.FromImage(bitmap);
string tfileName = @"D:\data\001_bak.jpg";
Image source = Image.FromFile(sfileName );
Bitmap bitmap = new Bitmap(source);
Graphics g = Graphics.FromImage(bitmap);
g.FillRectangle(Brushes.Black, 0, 0, 100, 5);
//To do your code//
bitmap.Save(tfileName);
File.Delete(sfileName );
파일 삭제에서 Exception 이 발생하며 다음과 같은 에러 메세지가 나타난다.
"파일은 다른 프로세스에서 사용 중이므로 프로세스에서 액세스할 수 없습니다."
이럴경우 파일을 FromFile 이 아니고 Stream 에서 불러온후 사용해야 한다.
string sfileName = @"D:\data\001.jpg";
string tfileName = @"D:\data\001_bak.jpg";
using (FileStream fsIn = new FileStream(sfileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
Image source = Image.FromStream(fsIn);
Bitmap bitmap = new Bitmap(source);
Graphics g = Graphics.FromImage(bitmap);
g.FillRectangle(Brushes.Black, 0, 0, 100, 5);
// To do your code
bitmap.Save(tfileName);
File.Delete(sfileName);
fsIn.Close();
}
반응형