Comment puis-je recadrer une image dans Qt?

Je charge une image PNG dans un QPixmap / QImage et je veux la recadrer. Y a-t-il une fonction qui fait cela dans Qt, ou comment devrais-je le faire autrement?

29
demandé sur sashoalm 2011-08-10 16:15:37

4 réponses

Vous pouvez utiliser QPixmap::copy:

QRect rect(10, 20, 30, 40);
QPixmap original('image.png');
QPixmap cropped = original.copy(rect);

Il y a aussi QImage:: copy :

QRect rect(10, 20, 30, 40);
QImage original('image.png');
QImage cropped = original.copy(rect);
30
répondu hmuelner 2014-09-12 17:21:14

Utilisez QImage au lieu de QPixmap:

    QImage image("initial_image.jpg");
    QImage copy ;
    copy = image.copy( 0, 0, 128, 128); 
    copy.save("cropped_image.jpg");

CE code enregistrera un fichier recadré dans le coin supérieur gauche 128x128px.

25
répondu Zienek 2012-02-15 11:33:14

Puisque vous utilisez QPixmap, vous pouvez utiliser ses méthode de copie avec un QRect pour effectuer la récolte.

3
répondu Bart 2011-08-10 13:14:22

Utilisez simplement les fonctions copy() de QPixmap.

Ce texte est le résultat de la lecture du premier commentaire sur votre question:

Parfois, il est préférable d'enrouler autour d'une image. C'est pour avoir une image qui fait partie d'une autre image ou en d'autres termes les points d'une partie à une autre image. C'est ainsi que l'image encapsulée ne nécessite pas de mémoire supplémentaire, sauf pour son en-tête. Vous pouvez afficher ou enregistrer l'image enveloppée sans soucis. L'inconvénient est que l'image originale doit rester valide jusqu'à ce que vous utilisiez l'image encapsulée, aussi si vous dessinez dans l'image encapsulée, cela affectera la source.

2
répondu zkunov 2011-08-10 13:38:14