保存的QPixmap为JPEG失败(QT 4.5)
题
我有以下代码。
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机。调试版本将是寻找调试插件和失败加载它们。
不隶属于 StackOverflow