Je charge une image PNG dans un QPixmap/QImage et je veux la recadrer. Existe-t-il une fonction qui fait cela dans Qt, ou comment dois-je le faire autrement?
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);
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.
Puisque vous utilisez QPixmap, vous pouvez utiliser son méthode de copie et lui fournir un QRect pour effectuer le recadrage réel.
Utilisez simplement les fonctions copy () de QPixmap.
Ce texte est le résultat de la lecture du premier commentaire sur votre question:
Parfois, il vaut mieux envelopper une image. C'est d'avoir une image qui fait partie d'une autre image ou en d'autres termes pointe vers une partie d'une autre image. C'est ainsi que l'image encapsulée ne nécessite pas de mémoire supplémentaire, à l'exception de son en-tête. Vous pouvez afficher ou enregistrer l'image enveloppée sans soucis. L'inconvénient est que l'image d'origine doit rester valide jusqu'à ce que vous utilisiez l'image encapsulée, également si vous dessinez dans l'image encapsulée, cela affectera la source.