如何将多页Magick++图像转换为QImage

How to convert multi page Magick++ Image to QImage?

本文关键字:图像 转换 QImage Magick++      更新时间:2023-10-16

我将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 Image 的方法。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" );`

我欢迎任何建议。

谢谢!

既然你已经有了魔法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());
}