2017-03-09 52 views
0

我在Qt5應用程序中使用libdmtx。 (我打得周圍的一些替代品,我不會去,爲什麼他們不適合我......)如何在沒有ImageMagick的情況下將ImageMagick圖像導入到Qt5應用程序中?

我想在我的UI一個點來顯示數據矩陣條形碼。我有一個這樣的行,如果我對ImageMagick的鏈接,應該工作:

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

的事情是,我已經使用QT5,我真的不希望添加額外的整個庫,以顯示一個圖像。有一些解釋,這條線是on the ImageMagick website

我真的希望將其加載到一個有效的QImage(雖然像素圖和如也沒關係,關鍵是我要顯示它)。我試過這個網頁上的所有相關職能和正在運行的想法: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的無符號的字符*。這樣就縮小了我的選擇範圍。我認爲寬度和高度是非常明顯的。訣竅是選擇正確的編碼格式。我知道它是RGB,因爲在ImageMagick代碼中它被指定爲RGB。這樣就縮小了一點。但這還不夠。 我知道像素一樣的東西進來,因爲三胞胎ImageMagick的行指定他們,RGB,在三胞胎(這是更清楚的ImageMagick文檔)

所以從https://doc.qt.io/qt-5/qimage.html#Format-enum正確的選擇必須是RGBXXX。鑑於像素被編碼爲「Charpixels」,我猜測每個像素都由一個字符表示(即8位「字節」),因此我希望圖像格式具有所有八個像素,因此RGB888。

我希望這有助於未來的傢伙:-)

(是的,現在回想起來似乎面臨-smackingly明顯)

+0

如果你有Qt的,還有什麼理由使用ImageMagick的... –

相關問題