Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.8.0 - Qt Creator : 4.3.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Optimiser l'espace mémoire occupé par de photos

Bonjour,

Je travaille sur un projet qui (entre autre) gère une liste de produits, avec une photo pour chacun de ces produits.

A chaque fois que l'utilisateur change de fiche produit sa photo s'affiche.

Quand une photo est affichée, elle est chargée depuis le fichier dans un QPixmap, elle est réduite à une taille pour que son coté soit de 300 pixels maximum, puis stockée dans une liste qui conserve les 50 derniers QPixmap utilisés, pour ne pas avoir a recharger le fichier à chaque fois.

Donc quand l'utilisateur change de fiche produit, le programme verifie dans la liste si la photo est déjà chargée.

Tout ceci fonctionne très bien.

Par contre, j'imagine que lorsque l'image est chargée dans un pixmap, elle ne doit pas être compressée (il doit y avoir 4 octets par pixels).

Ma question, existe il un moyen réduire la taille des images en mémoire ? Comme une sorte de QPixmap qui garderait l'image au format png ou toute autre solution.

Merci d'avance.

Réponses

  • A ma connaissance, aucune des classes d'images de Qt ne manipule en interne des données compressées. Donc probablement que le mieux est de gérer toi même un buffer contenant ces données et créer un QPixmap/QImage quand tu en as besoin (avec fromData).
    Par contre, ca serait mieux que tes données soient déjà prêtes en ligne (c'est a dire que déjà dimensionné a 300px). Sinon cela veut dire charger l'image, la décompresser, la redimensionner, puis la recompresser pour la conserver.
  • En effet, je viens de signaler a la personne intéressée que cela ne sert a rien de prendre des photos en 5300*3000 pour faire des vignettes.

    Bref, merci pour la réponse.
    Je vais essayer de trouver un tour de passe passe.
  • Basiquement, suffit de faire un code qui charge les images, les redimensionner, puis upload la nouvelle image comme thumbnail. A priori, tu as deja un programme qui fait quasiment tout ca, suffit d'ajouter l'upload.
Connectez-vous ou Inscrivez-vous pour répondre.