如何将tiff或pnm转换为Qt中的jpeg
我使用扫描仪。扫描仪输出采用tiff或pnm格式。但我无法将这些格式加载到QImage中。如何将tiff或pnm转换为Qt中的jpeg
QProcess process; process.start("scanimage -d epjitsu --format=tiff");
process.waitForFinished(240000);
QByteArray ba = process.readAllStandardOutput();
QImage image;
image.fromData(ba);
image.fromData(ba)将失败,因为Qt不知道tiff格式。只有这样,如何转换它,是将bytearray存储到文件并使用linux实用程序转换来转换它。但我不想这样走。我想在Qt中以某种方式做它。
回答:
你可以使用GDAL来打开tiff文件,并且他们创建一个QImage。这个QImage可以保存为jpg格式。
回答:
Qt通过libtiff提供了tiff支持。
我认为默认配置选项是它使用任何系统提供的。这意味着你的系统应该安装libtiff。
您还可以在其中提供-qt-libtiff
配置标志的自定义qt构建,该标志将使用捆绑的lib将其合并到qt二进制文件中,而不是使用外部系统库。
另一个要考虑的问题是,tiff支持不在“Qt Essentials”模块中,而是在Qt Image Formats模块面板中的“Qt附加组件”的一部分。
最后,您仍然可以选择扫描到文件,然后通过外部工具将文件转换为支持的格式。
回答:
qt知道tiff格式。下面的代码对我的作品:
QFile f("Untitled.tiff"); if (!f.open(QIODevice::ReadOnly)) {
return;
}
QByteArray ar(f.size(), ' ');
f.read(ar.data(), ar.size());
QImage img;
img.loadFromData(ar);
if (!img.isNull())
{
QPixmap image = QPixmap::fromImage(img);
ui.tiffLabel->setFixedSize(img.size());
ui.tiffLabel->setPixmap(image);
}
确保您满足所有的DLL依赖(我supect qtiff.dll)
确保您QByteArray ba
包含图像
和,可能是好主意使用loadFromData
insted fromData
以上是 如何将tiff或pnm转换为Qt中的jpeg 的全部内容, 来源链接: utcz.com/qa/265389.html