OpenCV 파일 저장기능 구현2
“OpenCV 파일 저장기능 구현(http://deios.kr/401)”에 파일 저장기능과 파일 열기기능을 강화해 보도록 하겠습니다.
먼저 “새 이름으로 저장”시 자동으로 확장자를 추가하기 위해서 OnFileSaveAs함수를 수정하겠습니다.
수정 전
CFileDialog dlgFile(TRUE);
CString fileName;
const int c_cMaxFiles = 100;
const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1;
dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize);
dlgFile.GetOFN().nMaxFile = c_cbBuffSize;
int chk = dlgFile.DoModal();
fileName.ReleaseBuffer();
if(chk == IDOK){
pDoc->OnSaveDocument(dlgFile.GetPathName());
}수정 후
CString strFilter = TEXT("JPEG files(*.jpg, *.jpeg, *.jpe) | *.jpg; *.jpeg; *.jpe |\
Portable Network Graphics file(*.png) | *.png |\
Windows Bitmap files(*.bmp, *.dib) | *.bmp; *.dib |\
Sun resters(*.sr, *.ras) | *.sr; *.ras |\
TIFF files(*.tiff, *.tif) | *.tiff; *.tif |\
지원하는 모든 영상 파일 | *.jpg; *.jpeg; *.jpe; *.png; *.bmp; *.dib; *.sr; *.ras; *.tiff; *.tif || ");
CFileDialog dlgFile(FALSE, TEXT("jpg"), NULL, OFN_OVERWRITEPROMPT, strFilter, this);
if(IDOK == dlgFile.DoModal()) {
pDoc->OnSaveDocument(dlgFile.GetPathName());
}새 이름으로 저장 부분만 수정하면 뭔가 아쉬우니 파일 열기 부분도 확장자가 자동으로 들어가게 수정해 봅시다.

void CMFC_OpenCVApp::OnFileOpen()
{ // TODO: 여기에 명령 처리기 코드를 추가합니다.
CString strFilter = TEXT("JPEG files(*.jpg, *.jpeg, *.jpe) | *.jpg; *.jpeg; *.jpe |\
Portable Network Graphics file(*.png) | *.png |\
Windows Bitmap files(*.bmp, *.dib) | *.bmp; *.dib |\
Sun resters(*.sr, *.ras) | *.sr; *.ras |\
TIFF files(*.tiff, *.tif) | *.tiff; *.tif |\
지원하는 모든 영상 파일 | *.jpg; *.jpeg; *.jpe; *.png; *.bmp; *.dib; *.sr; *.ras; *.tiff; *.tif || ");
CFileDialog dlgFile(TRUE, TEXT("jpg"), TEXT("*.jpg"), OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT, strFilter);
if(IDOK == dlgFile.DoModal()) {
POSITION pos = dlgFile.GetStartPosition();
while(pos) OpenDocumentFile(dlgFile.GetNextPathName(pos));
}
}이젠 다음과 같은 깔끔한 불러오기 & 저장 Dialog를 볼 수 있습니다.


cfile29.uf.12248E3B4D2600FF0E7A9C.pdfcfile7.uf.192619444D2603C109885B.zip



