문제

다음 코드가 있습니다.

QString fileName = QFileDialog::getSaveFileName(
   this, 
   tr("Output Image file"),
   (""),
   tr("PNG (*.png);;JPEG (*.JPEG);;Windows Bitmap (*.bmp);;All Files (*.*)")
);

if(fileName != "")
{
   QwtPlot* pPlot = ...
   QSize size = pPlot->size();
   QRect printingRect(QPoint(0, 0), size);

   QPixmap pixmapPrinter(size);
   pixmapPrinter.fill(Qt::white);

   {
      QPainter painter(&pixmapPrinter); 
      pPlot->print(&painter, printingRect);     
   } 

   bool isOk = pixmapPrinter.save(fileName);

   if(!isOk)
   {                
      QString msgText = tr("Failed to write into ") + fileName;

      QMessageBox::critical(this, tr("Error Writing"), msgText);
   }
}

따라서 경로는 다음과 같습니다. - 파일 대화 상자 팝업 - 사용자는 형식과 파일을 선택합니다 - 시스템은 qpixmap에 플롯을 그립니다 - qpixmap을 파일에 저장합니다.

문제없이 PNG 및 BMP에서 작동하지만 JPEG, JPG, JPG 등의 경우 실패합니다.

QT 문서 전체에 있었지만 세부 사항을 찾을 수 없었습니다. 그것은 단지 작동해야합니다. 어떤 아이디어?

Windows에는 QT Commercial Edition, 4.5.1을 사용하고 있습니다.
DLLS를 사용하고 있으며 QT는 경로에 없습니다.

방금 다른 라이브러리에서 사용하는 고전적인 제 3 자 JPEG.LIB (독립적 인 JPEG 그룹의 JPEG 소프트웨어)에 정적으로 연결하고 있음을 깨달았습니다.

이 때문에 갈등이나 무언가가 발생할 수 있습니까?

또는 단순히 플러그인이 제대로로드되지 않은 것입니다.

도움이 되었습니까?

해결책

아마도 플러그인을 찾을 수 없을 것입니다 ...

프로젝트에 라이브러리 경로를 추가하거나 ImageFormats 폴더를 이진 근처에 넣을 수 있습니다.

ImageFormats 폴더가 플러그인에 있습니다 ..

(아마도 JPEG 이미지도 표시 할 수 없을 것입니다)

다른 팁

정적 빌드를 만드는 경우 추가해야합니다. QTPLUGIN += qjpeg ImageFormats의 정적 JPEG 라이브러리가 응용 프로그램과 연결되도록 .pro 파일에.

플러그인이 누락 될 가능성이 높으며 가장 좋은 작업 방법은 툴킷이 지원하는 이미지 형식 만 나열하는 것입니다.

이 예제는 내 삽입 사진에서 나온 것이지만 저장에 맞게 조정할 수 있어야합니다.

QString fileFormats = "(";
/* Get all inputformats */
for (int i = 0; i < QImageReader::supportedImageFormats().count(); i++) {
    fileFormats += "*."; /* Insert wildcard */
    fileFormats
            += QString(QImageReader::supportedImageFormats().at(i)).toLower(); /* Insert the format */
    fileFormats += " "; /* Insert a space */
}
fileFormats += ")";

QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"),
        currentPath, tr("Images ") + fileFormats);

또한 개발자가 디버그 빌드를 QA 시스템에 복사하면 때때로 형식을 잃습니다. 디버그 버전은 디버그 플러그인을 찾고로드하지 못합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top