2017-03-09 13 views
0

私はQt5アプリケーションでlibdmtxを使用しています。 (私はいくつかの選択肢で遊んできましたが、なぜ彼らは私にとって正しいものではなかったのでしょうか...)ImageMagickを使わずにImageMagickイメージをQt5アプリケーションにインポートするにはどうすればよいですか?

私は自分のUIの一点にdatamatrixバーコードを表示したいと思います。私はImageMagickのに対してリンクする場合は動作するはずです。このような行があります:

MagickConstituteImage(wand, enc->image->width, enc->image->height, 
    "RGB", CharPixel, enc->image->pxl); 

事は、私はすでにQt5を使用していると私は本当に一つの画像を表示するために、全体の余分なライブラリを追加したくない、です。この行が何をしているのかについていくつかの説明がありますon the ImageMagick website

本当に有効なQImageにロードしたいのですが(pixmapsなども問題ありませんが、ポイントは表示したいです)。私はこのページに関連するすべての機能を試してみたやアイデアが不足しています:https://doc.qt.io/qt-5/qimage.html#QImage-3

ENC->画像のメンバーは、このように、およそ名前が付けられています。事前に

  bitsperchannel 
     bitsperpixel 
     bytesperpixel 
     channelcount 
     channelstart 
     height 
     imageFlip 
     pixelPacking 
     pxl 
     rowPadBytes 
     rowSizeBytes 
     width 

感謝を!

答えて

1

[OK]を、これは、私自身の質問の答えであることを意味しませんでした。とにかく私が実際に起こると思ったのは、とにかくImageMagickとリンクし、誰かが次の人を助ける答えを投稿するかもしれないということでしょう。

しかし、私はそれを自分で手に入れました。

QImage image(enc->image->pxl, enc->image->width, enc->image->height, QImage::Format_RGB888); 

これらのパラメータは何ですか?マジック?いいえ。ここでは、コンストラクタのための署名です:

QImage::QImage(const uchar *data, int width, int height, Format format, QImageCleanupFunction cleanupFunction = Q_NULLPTR, void *cleanupInfo = Q_NULLPTR) 

私はここからのことだ:https://doc.qt.io/qt-5/qimage.html#QImage-4

最初のパラメータ、明らかPXLは* unsigned char型です。それで、私の選択肢を少し狭めました。幅と高さはかなり分かりやすいと思います。トリックは正しいエンコーディング形式を選択していました。 ImageMagickコードではRGBと指定されているので、RGBであることはわかっています。だからそれを少し狭めます。しかしそれだけでは不十分でした。 私はImageMagickのラインがそれら、RGBを指定するためのピクセル鮫はトリプレットで、トリプレットに来ることを知っている(これはImageMagickのドキュメントから明確である)

だから https://doc.qt.io/qt-5/qimage.html#Format-enumから正しい選択はRGBXXXなければなりません。ピクセルが「シャープピクセル」としてエンコードされているとすれば、各ピクセルは1つの文字(つまり8ビットの「バイト」)で表現されていると推測されるので、RGB888のすべてのイメージフォーマットが必要でした。

あなたはQtのを持っていれば、ImageMagickのを使用する理由はほとんどあります...

+0

私は、これは隣の男:-)

に役立ちます願っています(そして、はい、振り返ってみると、顔smackingly明白と思われます) –

関連する問題