Comment redimensionner une image?
J'ai l'image (500x500) mais j'ai besoin de redimensionner à la taille de 200x200 et de la peinture sur TImage. Comment parvenir à un tel résultat?
Note
je sais à propos de Stretch
propriété dans TImage, mais je veux redimensionner l'image par programmation.
source d'informationauteur Little Helper
Vous devez vous connecter pour publier un commentaire.
Si vous savez que les nouvelles dimensions ne sont pas supérieures à celles d'origine, vous pouvez simplement faire
Je laisse comme un exercice d'écrire le code correspondant si vous savez que les nouvelles dimensions ne sont pas petits que celles à l'origine.
Si vous voulez une fonction générale, vous pourriez faire
Cette approche a l'inconvénient de faire deux pixel-les opérations de copie. Je ne peux penser à au moins deux solutions à ce problème. (Qui?)
J'ai souvent utilisé le
SmoothResize
procédure à partir de cette page: http://www.swissdelphicenter.ch/torry/printcode.php?id=1896La mise à l'échelle est beaucoup mieux que le StretchDraw fonction.
Ne laissez pas le titre vous tromper. La page montre le redimensionnement des images Jpg, mais le SmoothResize procédure elle-même utilise des bitmaps pour le redimensionnement. Le redimensionnement des Png qui pourrait être fait dans une semblable affaire, mais vous perdrez la transparence si vous utilisez cette procédure.
Consultez cet exemple simple sur comment redimensionner une image à l'aide de deux TBitmap32 objets. Le TBitmap32 est le meilleur en termes de vitesse/qualité d'image ratio.
Elle nécessite la https://github.com/graphics32 bibliothèque.
Je propose JanFX bibliothèque (maintenant intégré dans la graisse Jedi de la distribution, mais HEUREUSEMENT, vous pouvez extraire ce fichier à partir du Jedi). Dans JanFX voir le Tronçon (je pense) de la fonction. Il donne un très beau lissage (pas aussi bon que Graphics32 mais assez bon), mais beaucoup beaucoup plus rapide. Le JanFX.pas en le Jedi est buggé: ne fonctionne pas lorsque {$R} est SUR. Vous devez définir {$R- }. C'est tout. Les gars de Jedi entré ce bug 🙂
pour tout type d'images, vous pouvez utiliser ceci: