
Qt, actuellement en version 4.8 et 5.0 RC2, possède un certain nombre de fonctionnalités propre aux graphismes et au dessin.
Notamment une bonne gestion des différents formats d’images comme vous pouvez le voir dans le tableau suivant :
Format | Description | Support de Qt |
---|---|---|
BMP | Windows Bitmap | Read/write |
GIF | Graphic Interchange Format (optional) | Read |
JPG | Joint Photographic Experts Group | Read/write |
JPEG | Joint Photographic Experts Group | Read/write |
PNG | Portable Network Graphics | Read/write |
PBM | Portable Bitmap | Read |
PGM | Portable Graymap | Read |
PPM | Portable Pixmap | Read/write |
TIFF | Tagged Image File Format | Read/write |
XBM | X11 Bitmap | Read/write |
XPM | X11 Pixmap | Read/write |
S’il est possible de base de manipuler les images en changeant le mode RVB, en modifiant les pixels ou les couleurs, il faut passer par une manipulation manuelle pour convertir une image en niveaux de gris.
Pour cela rien de plus simple que la fonction suivante :
void toGrayscale(QImage & image) { Q_ASSERT(!image.isNull()); Q_ASSERT(image.width() > 0 && image.height() > 0); QRgb col; int gray; int width = image.width(); int height = image.height(); QImage alpha = image.alphaChannel(); // On sauvegarde le canal alpha pour la transparence for (int i = 0; i < width; ++i) { for (int j = 0; j < height; ++j) { col = image.pixel(i, j); gray = qGray(col); image.setPixel(i, j, qRgb(gray, gray, gray)); } } image.setAlphaChannel(alpha); }
L’opération n’est pas des plus légères puisqu’elle modifie un à un tous les pixels de l’image, toutefois elle fait ce qu’on lui demande.
Laissez un commentaire