gpt4 book ai didi

c++ - 如何在没有 ImageMagick 的情况下将 ImageMagick 图像导入 Qt5 应用程序?

转载 作者:行者123 更新时间:2023-11-28 05:15:49 25 4
gpt4 key购买 nike

我在 Qt5 应用程序中使用 libdmtx。 (我尝试过一些替代方案,但我不会深入探讨为什么它们不适合我...)

我想在我的 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->image 的成员大致这样命名:

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

提前致谢!

最佳答案

好吧,这并不意味着是那些回答我自己的问题的事情之一。我真正认为会发生的是无论如何我都会链接到 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 *。所以这缩小了我的选择范围。我认为宽度和高度非常明显。诀窍是选择正确的编码格式。我知道它是 RGB,因为在 ImageMagick 代码中它被指定为 RGB。所以这缩小了一点。但这还不够。我知道像素事物以三元组出现,因为 ImageMagick 行以三元组指定它们,RGB(这在 ImageMagick 文档中更清楚)

因此来自 https://doc.qt.io/qt-5/qimage.html#Format-enum正确的选择必须是 RGBXXX。鉴于像素被编码为“Charpixels”,我猜测每个像素都由一个字符(即一个 8 位“字节”)表示,因此我想要所有八位的图像格式,因此是 RGB888。

我希望这对下一个人有帮助:-)

(是的,回想起来这似乎是显而易见的)

关于c++ - 如何在没有 ImageMagick 的情况下将 ImageMagick 图像导入 Qt5 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42690321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com