Gérer les images en PyQt5 avec la classe QPixmap

QPixmap insert image in pyqt5 window Python

 

 

1. A propos de QPixmap

La classe QPixmap est un périphérique de dessin hors écran basé sur des pixels.

QPixmap est l'une des deux classes que PyQt fournit pour le traitement des images ; l'autre est QImage. QPixmap est conçue et optimisée pour le dessin ; QImage est conçue et optimisée pour les E/S et pour l'accès/la manipulation directe des pixels.
Une utilisation courante de la classe QPixmap est de permettre une mise à jour fluide des widgets.
Vous pouvez facilement afficher un QPixmap à l'écran en utilisant QLabel.setPixmap(). Par exemple, toutes les sous-classes de QPushButton prennent en charge l'utilisation de pixmap.

 

2. Importation de QPixmap et affichage d'une image

Pour insérer une image sur une fenêtre PyQt5 on doit procéder de la manière suivante:

  1. Importation de QPixmap : La classe QPixmap peut être importée depuis PyQt5.QtGui
  2. Création d'un objet QPixmap : La création de tel objet se fait via une instanciation sur la classe QPixmap
  3. Utilisation de la méthode setPixmap : Associer l'objet d'instance QPixmap à un QLabel via la méthode setPixmap()

Exemple

Créons maintenant un dossier nommé 'images/' et mettons au sein duquel une image 'laptop.png' et créons ensuite un fichier python pour visualiser l'image:

afficher image QPixmap Pyqt5 python

 

3. Afficher une Image avec QPixmap selon l'approche objet

Nous alons voir maintenant comment utiliser QPixmap selon l'approche objet. A cet effet nous procédons de la même manière que ci-dessus mais en endossant le code dans une classe Python.

NB: N'oublier pas de créer un répertoire './images' dans le même endroit du fichier de code python et d'y insérer une image nommée 'laptop.png'

 

4. Redimensionner une Image avec QPixmap

Il est souvent utile de redimensionner l'image pour qu'elle s'adapte au widget. Utilisez la méthode scaled().

 

5. Charger une Image à Partir de Données Brutes (Bytes)

Pour charger une image à partir de données brutes (comme une image téléchargée), utilisez loadFromData.




 

6. Sauvegarder une Image avec QPixmap

Si vous voulez enregistrer une image après l'avoir modifiée, utilisez save().

 

7. Utiliser QPixmap pour Dessiner

QPixmap peut être utilisé comme toile de dessin en utilisant un QPainter pour dessiner des formes ou du texte.

 

8. Manipuler la Transparence avec QPixmap

Vous pouvez ajuster l’opacité de QPixmap en utilisant setOpacity avec QPainter.

Exemple Complet

Voici un programme complet avec plusieurs fonctionnalités:

 

9. Liste des méthodes associées à QPixmap

La classe QPixmap est dotée de nombreuses méthodes permettent de manipuler et d’afficher des images de manière efficace dans une application PyQt.
Voici une liste des méthodes courantes associées à la classe QPixmap:

Constructeurs et méthodes de création:

  1. QPixmap() : crée un QPixmap vide.
  2. QPixmap(int width, int height) : crée un QPixmap avec une largeur et hauteur spécifiées.
  3. QPixmap(const QString &filename) : charge une image depuis un fichier.

Chargement et sauvegarde :

  1. load(const QString &filename, const char *format = nullptr) : charge une image depuis un fichier.
  2. loadFromData(const QByteArray &data, const char *format = nullptr) : charge une image depuis des données binaires.
  3. save(const QString &filename, const char *format = nullptr) : enregistre le QPixmap dans un fichier.

Propriétés de dimension et d'information:

  1. width() : retourne la largeur du QPixmap.
  2. height() : retourne la hauteur du QPixmap.
  3. size() : retourne la taille du QPixmap.
  4. rect() : retourne le rectangle englobant du QPixmap.
  5. depth() : retourne la profondeur en bits du QPixmap.

Manipulation et dessin:

  1. fill(const QColor &color = Qt: white) : remplit le QPixmap avec une couleur spécifiée.
  2. scaled(int width, int height, Qt: AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) : retourne un QPixmap redimensionné.
  3. transformed(const QTransform &matrix, Qt: TransformationMode mode = Qt::FastTransformation) : applique une transformation au QPixmap.

Masques et transparence:

  1. mask() : retourne le masque de transparence.
  2. setMask(const QBitmap &mask) : applique un masque de transparence.
  3. createHeuristicMask(bool clipTight = true) : crée un masque de transparence basé sur les pixels non transparents.
  4. createMaskFromColor(const QColor &maskColor, Qt: MaskMode mode = Qt::MaskInColor) : crée un masque à partir d’une couleur spécifique.

Optimisation et gestion de la mémoire:

  1. setOptimization(QPixmap: Optimization optimization) : définit les paramètres d'optimisation.
  2. isDetached() : vérifie si le QPixmap est détaché.
  3. detach() : détache le QPixmap pour en faire une copie indépendante.

Autres méthodes utiles:

  1. isNull() : vérifie si le QPixmap est vide.
  2. convertToImage() : convertit le QPixmap en QImage.
  3. scroll(int dx, int dy, const QRect &rect) : déplace le contenu du QPixmap.
  4. swap(QPixmap &other) : échange les données de ce QPixmap avec un autre.




 

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply