안녕하세요. winform과 opencv로 동영상에서 이미지를 검색하는 프로그램을 만들고 있습니다.
질문은 바로 아래에 있을 코드에서 "System.ArgumentException: '매개 변수가 잘못되었습니다." 이 오류가 왜 뜨는지 알고싶습니다.
--------------------------------------------------------
Size _resize = new Size(146, 96);
using (Bitmap _image = new Bitmap(imagePath))
using (Bitmap _resizeImage = new Bitmap(_image, _resize))
{
selectedImage.Image = _resizeImage; //selectedImage는 winform의 pictureBox입니다.
}
--------------------------------------------------------
위 코드를 실행하면 다음과 같은 오류가 발생합니다.
" System.ArgumentException: '매개 변수가 잘못되었습니다. "
찾아보니 저 오류는 잘못된 형식의 이미지를 불러오기 하면 나오는 오류라고 합니다. 하지만 경로의 이미지는 분명 알맞은 이미지입니다.
제 생각엔 selectedImage.Image = _resizeImage;를 하던 도중 _resizeImage의 메모리가 해제되어 없는 메모리를 참조하게 된 것이라 짐작하고 있지만.. 코드는 위에서 아래로 순차로 실행된다는 것을 생각하면 이것도 아닌것 같아 이렇게 글을 써봅니다.
그리고 이 문제는 아래의 코드로 작성하면 정상 작동 합니다.
--------------------------------------------------------
Size _resize = new Size(146, 96);
Bitmap _image = new Bitmap(imagePath);
Bitmap _resizeImage = new Bitmap(_image, _resize);
...
//다른 작업
...
_image.Dispose();
_resizeImage.Dispose();
--------------------------------------------------------
using을 사용하는 이유가 Bitmap의 자동 메모리 해제를 위한것이라 아래의 코드를 사용해도 될 것 같지만 그래도 영 찜찜합니다.
[최초 등록일: ]
[최종 수정일: 12/30/2020]