2017-12-27 21 views
0

私はスキャナを使用しています。スキャナ出力がtiffまたはpnm形式です。しかし、これらのフォーマットをQImageに読み込むことはできません。Qiffでtiffまたはpnmを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)は、TIFF形式を認識しないため失敗します。唯一の方法は、それを変換する方法は、bytearrayをファイルに保存し、それを変換するために変換するLinuxユーティリティを使用することです。しかし、私はこのように行きたくありません。私は何とかQtでやりたいと思っています。

+0

ドキュメントによれば、tiffがサポートされています:http://doc.qt.io/qt-5/qtimageformats-index.html – eyllanesc

+0

qtがシステムtiを使用するように設定されている場合がありますサポートされていますが、存在しません。これは、カスタムQtを好む理由は、安全な側だけにイメージフォーマットをバンドルするためです。 – dtech

+0

私は何度もQtのドキュメントを読んでいます。しかし、私はそれを使用しないでください。私がCentOSとUbuntuでそれを使いたいのであれば、私は何をすべきでしょうか? –

答えて

0

GDALを使用すると、tiffファイルを開くことができ、QImageを作成できます。このQImageはjpg形式で保存することができます。

0

Qtはlibtiffでtiffをサポートしています。

デフォルト設定オプションは、システムが提供しているものを使用するということです。つまり、システムにlibtiffをインストールする必要があります。

コンフィグレーションフラグ-qt-libtiffを提供するカスタムqtビルドを行うこともできます。このフラグは、バンドルされたlibを使用して外部システムライブラリを使用するのではなく、qtバイナリに組み込みます。

tiffサポートは「Qt Essentials」モジュールではなく、Qt Image Formatsモジュールの前面にある「Qt Add-Ons」の一部です。

最後に、ファイルをスキャンして外部ツールを使用してファイルをサポートされている形式に変換することもできます。

+0

このオプションを使用してプロジェクトを構築する必要があるか、Qtリソースをダウンロードしてこのオプションを構築する必要がありますか? –

+0

@PeterPolakはあなたのために 'QImageReader :: supportedImageFormats()'のリストを表示しますか? – dtech

+0

私はそこにtiffを見る。しかし、QByteArrayからQImageにデータをロードすると、QImageオブジェクトは無効な画像を保持します。 –

0

qtはtiff形式を認識します。あなたはすべてのDLLの依存関係を満たすことを確認してください

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

(私はqtiff.dll supect)

あなたQByteArray baは画像

と、可能性が含まれていることを確認し、することをお勧めします:コードに続いて、私の作品loadFromData insted of fromData

関連する問題