Search code examples
c++qtqt4qpixmap

Saving QPixmap to JPEG failing (Qt 4.5)


I have the following code.

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);
   }
}

So, the path is like this: - File dialog pops up - users selects format and file - the system draws plot onto QPixmap - Saves QPixmap into the file.

It works for PNG and BMP without a problem, but for JPEG, jpg, JPG, etc it fails.

I was all over Qt documentation but could not find any details. It should just work. Any ideas?

I am using Qt commercial edition, 4.5.1 for Windows.
I am using dlls, Qt is not on the path.

I just realised that I am linking statically to a classical 3rd party jpeg.lib (The Independent JPEG Group's JPEG software), which is used by other library.

Is it possible that a conflict or something arises because of this?

Or it is simply that plugin is not loaded properly.


Solution

  • probably it cant find the plugin...

    you can add library path to project or you can simply put imageformats folder near your binary.

    imageformats folder is in plugins..

    (probably you cant display jpeg images too)