Qt Jpeg 파일 저장에 대해서 질문 드립니다.
글쓴이: kjh27814 / 작성시간: 목, 2014/05/08 - 2:49오후
안녕하세요.
개발 도중 이상한 상황이 생겨 질문 올립니다.
현재 화면의 영역을 jpeg파일로 저장하는 간단한 프로그램을 작성하였는데
그냥 Qt Creator에서 런타임으로 돌리면 jpeg파일이 잘 저장됩니다.
그런데 그냥 빌드된 파일을 실행시키면 jpeg 파일이 저장이 되지 않습니다.
검색을 해보니 jpeg관련 라이브러리를 같이 포함시켜줘야 한다고 해서
같은 폴더 밑에 뒀습니다.
예를 들어 바탕화면에 실행파일이 있다고 치면
jpeg 라이브러리(컴파일러가 있는 폴더의 plugins폴더 내부에 있는 라이브러리)를 바탕화면/imageformats 폴더 내부에 넣어둔 뒤
실행해도 동일하게 저장이 되지 않습니다.
라이브러리 path를 설정해주라는 얘기도 있어서
int main(int argc, char *argv[]) { QApplication a(argc, argv); a.addLibraryPath(QDir::currentPath() + "/imageformats"); a.addLibraryPath(QDir::currentPath() + "/plugins"); MainWindow w; w.show(); qDebug() << a.libraryPaths(); return a.exec(); }
이렇게 코딩해봤습니다만 이것도 역시 마찬가지..
QImageWriter의 supportedImageFormats()함수로 출력해보니 런타임에서는 jpg와 jpeg가 뜨는데 빌드 된 파일로 직접 실행시켰을때는 뜨지 않습니다.
아무리 검색해봐도 제가 시도한 방법 외에는 다른 해결 방법이 보이지 않습니다.
여러분들의 의견 부탁드립니다.
감사합니다.
/// 추가
환경은 윈도우 7 Ultimate English 64Bit, 컴파일러는 MinGW 64Bit입니다.
이 밑은 jpeg 파일을 저장하는 코드입니다.
QPixmap pixmap = QWidget::grab(rect()); QImage image = pixmap.toImage(); bool isSave = pixmap.save("E:/aa.jpeg", "jpeg", 100); bool isSave1 = image.save("E:/aa.jpeg", "jpeg", 100); QString a; if(isSave) a = "TRUE"; else a = "FALSE"; ui->lineEdit->setText(a); if(isSave1) a = "TRUE"; else a = "FALSE"; ui->lineEdit_2->setText(a);
Forums:
Qt의 /bin 폴더도 경로 지정이 되어 있나요?
Qt의 /bin 폴더도 경로 지정이 되어 있나요?
런타임에서 돌렸을 때 라이브러리 경로를
런타임에서 돌렸을 때 라이브러리 경로를 확인해봤을땐
1. 실행폴더
2. Qt컴파일러 폴더/plugins
이렇게 두개의 경로가 디폴트로 잡혀 있었습니다.
/bin 경로가 잡혀 있으면 plugins 폴더
/bin 경로가 잡혀 있으면 plugins 폴더 경로를 포함하지 않아도 됩니다. 윗분 말씀대로 윈도우즈 PATH 에 경로가 제대로 되어 있는지 확인해 보세요.
/bin 폴더의 libjpeg-8.dll을 포함시키니
/bin 폴더의 libjpeg-8.dll을 포함시키니 정상동작하네요!
답변 주신분들 감사합니다.
댓글 달기