我有以下代码。

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软件),它是由其他库。

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

或者,它仅仅是插件未正确装载。

有帮助吗?

解决方案

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

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

imageformats文件夹是在插件..

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

其他提示

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

您的插件是最有可能丢失,工作最好的办法是通过工具包仅支持上市图像格式。

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

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