我将Magick ++单页图像转换为QT图像(实际上也是QPixmap,但也可以是QImage):
Blob my_blob_1;
Image img1;
img1.magick("MNG"); // or PNG
img1.write(&my_blob_1);
const QByteArray imageData1((char*)(my_blob_1.data()),my_blob_1.length());
item1p.loadFromData(imageData1);
item1 = Scene->addPixmap(QPixmap(item1p));`
其中:
QPixmap item1p;
QGraphicsScene *Scene;
QGraphicsPixmapItem *item1;`
我的问题是:我怎么能用多页图像做到这一点? 下面,我在矢量中有一个多页图像,我用STL算法操作它,但我找不到将它输出到QT图像的方法。 Magick ++将其写入单个blob。 我需要为每个页面写单独的blob。我还是其他方式? 矢量到QVector
Blob my_blob_111;
vector<Image> imageListmpp;
writeImages( imageListmpp.begin(), imageListmpp.end(), &my_blob_111 );
Image aaa;
aaa.read(my_blob_111);
aaa.write( "D:/test/aaa.pdf" );`
我欢迎任何建议。
谢谢!
答案 0 :(得分:1)
由于您已经拥有了Magick Image
的向量,因此您的错误是将它们全部保存为唯一的Blob
。相反,将它们单独转换为blob,然后转换为QPixmap
:
vector<Image> imageListmpp; // your input
QVector<QPixmap> pixmaps; // your output (use std::vector if you prefer)
QVector<QGraphicsPixmapItem *> graphicsItems;
for(int i=0; i<imageListmpp.size(); i++)
{
// Get the individual image data
Blob blob;
imageListmpp[i].magick("MNG"); // or PNG
imageListmpp[i].write(&blob);
const QByteArray imageData((char*)(blob.data()),blob.length());
// Convert the data to a QPixmap in the vector
pixmaps << QPixmap();
pixmaps.last().loadFromData(imageData);
graphicsItems << Scene->addPixmap(pixmaps.last());
}