Emaborsa
06-05-2011, 16:44
Non riesco a caricare delle immagini a livello GUI. Premetto che sto lavorando con QT, perciò dovrebbe essere MOLTO più facile....ma comunque non ne vengo a capo. Mi serve sapere come visualizzare un'immagine presente su disco fisso e anche un immagine in memoria, tipo in un array di char. In QT c'è QImage e QPixmap, c'è anche la possibilità di usare QByteArray. Riesco a creare questi oggetti, ma quando provo a visualizzarli non appare nulla, e non riesco a capire cosa sbaglio.
l'array in memoria viene preso da un database, quello è sicuro al 100% che sia OK, dato che se provo a scriverlo su disco fisso, mi crea i gif senza problemi (vedi altra discussione (http://www.hwupgrade.it/forum/showthread.php?t=2345638&page=2).
EDIT:
Ci sono appena riuscito usando un file presente su disco; snippet:
....
QImage im("pad.jpg");
ui->label->setPixmap(QPixmap::fromImage(im));
ui->appMainPage->show();
....
Lo avevo provato già prima, ma si vede che c'era qualcosa di errato. In effetti così è semplice. Ora però vorrei prendere la stringa (BLOB) dal DB e passarlo alla gui, senza scriverlo su disco. Ho scritto:
....
Item *anItem;
db.open();
anItem = db.getRandomItem();
db.close();
QByteArray array(anItem->getpictureInArray());
QImage im;
im.loadFromData(array);
ui->label->setPixmap(QPixmap::fromImage(im));
ui->appMainPage->show();
....
db è il mio oggetto Database e anItem->getpictureInArray() ritorna l'immagine in forma di array. Penso che il problema sia li, ma non so come risolvere.
l'array in memoria viene preso da un database, quello è sicuro al 100% che sia OK, dato che se provo a scriverlo su disco fisso, mi crea i gif senza problemi (vedi altra discussione (http://www.hwupgrade.it/forum/showthread.php?t=2345638&page=2).
EDIT:
Ci sono appena riuscito usando un file presente su disco; snippet:
....
QImage im("pad.jpg");
ui->label->setPixmap(QPixmap::fromImage(im));
ui->appMainPage->show();
....
Lo avevo provato già prima, ma si vede che c'era qualcosa di errato. In effetti così è semplice. Ora però vorrei prendere la stringa (BLOB) dal DB e passarlo alla gui, senza scriverlo su disco. Ho scritto:
....
Item *anItem;
db.open();
anItem = db.getRandomItem();
db.close();
QByteArray array(anItem->getpictureInArray());
QImage im;
im.loadFromData(array);
ui->label->setPixmap(QPixmap::fromImage(im));
ui->appMainPage->show();
....
db è il mio oggetto Database e anItem->getpictureInArray() ritorna l'immagine in forma di array. Penso che il problema sia li, ma non so come risolvere.