保存的QPixmap为JPEG失败(QT 4.5)(Saving QPixmap to JPEG f

2019-09-19 07:45发布

我有下面的代码。

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文档,但无法找到任何细节。 它应该只是工作。 有任何想法吗?

我使用Qt的商业版本,4.5.1的Windows。
我使用的dll,Qt是不是路径上。

我才意识到,我静态链接到古典的第三方jpeg.lib(独立JPEG小组的JPEG软件),它是由其他库。

有没有可能是冲突或东西的产生是因为这个?

或者它只是该插件加载不正确。

Answer 1:

也许它不能找到插件...

您可以添加到项目库路径,也可以简单地把imageformats文件夹中的二进制附近。

imageformats文件夹是在插件..

(可能你不能显示JPEG图像太)



Answer 2:

如果你是一个静态的构建,必须添加QTPLUGIN += qjpeg你的.pro文件,使imageformats的静态JPEG库与您的应用程序链接。



Answer 3:

你的插件是最有可能丢失工作是由该工具包仅支持上市图像格式,最好的方式。

这个例子是从我插入图片,但你应该能够适应它为你保存为:

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机。 调试版本将是寻找调试插件和无法加载它们。



文章来源: Saving QPixmap to JPEG failing (Qt 4.5)
标签: c++ qt qt4 qpixmap