문제
안녕하세요 저는 기본 이미지 편집기 프로그램에서 비트 맵 이미지를 저장하려고합니다.
코드는 다음과 같습니다.
// then save it
ImageBoxInApp.Image.Save(filename);
편집하다 그리고 나는 이것으로 이미지를 열고 있습니다
openFileDialog1.Title = "Select an Image";
openFileDialog1.Filter = "All Files|*.*|Windows Bitmaps|*.bmp|JPEG Files|*.jpg";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
filename = openFileDialog1.FileName;
Image img = System.Drawing.Image.FromFile(filename);
그래서 내가 이것을 시도 할 때 나는 a를받습니다 Generic GDI+ error
. 그래서 나는 a를 찾았다 해결책 이것에 다음과 같이 보입니다.
// Delete existing file first
System.IO.File.Delete(filename);
// then save it
ImageBoxInApp.Image.Save(filename);
그러나이 작업을 수행하려고 할 때 삭제중인 파일이 현재 열려 있다는 또 다른 오류가 발생합니다. 편집하려는 파일이기 때문입니다.
실제로 애플리케이션을 닫지 않고 파일을 "닫는"방법은 무엇입니까? 아니면 대체 솔루션이 있습니까?
감사!
해결책
파일을로드하는 방법에 대한 컨텍스트를 보지 않고는 말하기는 어렵지만 몇 가지 제안이 있습니다.
- 저장하기 전에 기존 이미지를 새 이미지로 복사하고 원본을 닫고 삭제를 수행하고 사본을 저장하십시오.
- 파일을 임의의 파일 이름으로 저장하고 원본을 삭제하고 무작위로 명명 된 파일 이름을 원래 이름으로 바꿉니다.
- 파일을 메모리 스트림에로드하고 메모리 사본을 사용하여 이미지를 초기화합니다.
나는 대부분의 경우 옵션 #3과 함께 개인적으로 갈 것입니다. 사용을 완료했을 때 이미지를 폐기하십시오. 사용 () 블록으로 랩핑 할 수있는 경우 가장 좋습니다.
제휴하지 않습니다 StackOverflow