Как преобразовать многостраничное изображение Magick++ в QImage?

Я конвертирую одностраничное изображение 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++ записывает его в один большой двоичный объект. Мне нужно было бы писать отдельные капли для каждой страницы. Я, или есть другой способ? вектор в 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" );`

Я приветствую любое предложение.

Спасибо!


person Ervin Adorean    schedule 08.09.2013    source источник


Ответы (1)


Поскольку у вас уже есть вектор Магии Image, вашей ошибкой было сохранить их все как уникальный 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());
}
person Boris Dalstein    schedule 11.09.2013