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 faire autrement ?
Réponses
Trop de publicités?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);
Puisque vous utilisez QPixmap, vous pouvez utiliser sa fonction méthode de copie et lui fournir un QRect pour effectuer la récolte proprement dite.
Il suffit d'utiliser les fonctions copy() de QPixmap.
Ce texte est le résultat de la lecture du premier commentaire sur votre question :
Il est parfois préférable d'entourer une image. C'est-à-dire d'avoir une image qui fait partie d'une autre image ou, en d'autres termes, qui pointe vers une partie d'une autre image. De cette manière, l'image enveloppée ne nécessite pas de mémoire supplémentaire, à l'exception de son en-tête. Vous pouvez afficher ou sauvegarder l'image enveloppée sans souci. L'inconvénient est que l'image originale doit rester valide jusqu'à ce que vous utilisiez l'image enveloppée, et que si vous dessinez dans l'image enveloppée, cela affectera la source.