L'affichage et le dimensionnement d'une échelle de gris à partir d'une QImage dans Qt

J'ai été en mesure d'afficher une image dans une étiquette dans Qt en utilisant quelque chose comme ce qui suit:

transformPixels(0,0,1,imheight,imwidth,1);//sets unsigned char** imageData

unsigned char* fullCharArray = new unsigned char[imheight * imwidth];
     for (int i = 0 ; i < imheight ; i++)
         for (int j = 0 ; j < imwidth ; j++)
                fullCharArray[(i*imwidth)+j] = imageData[i][j];

QImage *qi = new QImage(fullCharArray, imwidth, imheight, QImage::Format_RGB32);

ui->viewLabel->setPixmap(QPixmap::fromImage(*qi,Qt::AutoColor));

Donc fullCharArray est un tableau de unsigned caractères qui ont été cartographiés à partir de la 2D matrice de données images, en d'autres termes, il est imheight * imwidth octets.

Le problème est, il semble que seulement une partie de mon image s'affiche dans le label. L'image est très grande. Je voudrais afficher l'image complète, réduite pour s'adapter à l'étiquette, avec le ratio d'aspect préservé.

Aussi, que QImage format était la seule que j'ai pu trouver qui semblait me donner une représentation proche de l'image, je suis désireux de l'affichage, c'est que ce que je devrais attendre? Je suis seulement en utilisant un octet par pixel (unsigned char - les valeurs de 0 à 255), et il semble qu'RGB32 ne fait pas beaucoup de sens pour ce type de données, mais aucun de ceux affichés quelque chose à distance correcte

edit:
Suivant dan gallaghers conseils, j'ai mis en place ce code:

QImage *qi = new QImage(fullCharArray, imwidth, imheight, QImage::Format_RGB32);
int labelWidth = ui->viewLabel->width();
int labelHeight = ui->viewLabel->height();

QImage small = qi->scaled(labelWidth, labelHeight,Qt::KeepAspectRatio);
ui->viewLabel->setPixmap(QPixmap::fromImage(small,Qt::AutoColor));

Mais cela provoque mon programme "de façon inattendue finir" avec le code 0

  • Selon la documentation de QImage::Format_RGB32 semble être 8bit/couleur + 8bit rembourrage pour faire de 32 bits pour la fabrication de travailler avec les plus faciles, donc, comment n'a pas de sens pour 8bit/couleur données?
InformationsquelleAutor Derek | 2011-01-18