2013-09-08 7 views
0

преобразовать одного Магического ++ страницу Изображение на QT изображения (QPixmap, на самом деле, но может быть QImage, а) с:Как преобразовать многостраничную страницу Magick ++ в 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");` 

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

Спасибо!

ответ

1

Поскольку у вас уже есть вектор Magick 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()); 
}