Le redimensionnement d'Image .Net avec Antialiasing
J'ai un peu de code C# qui redimensionne les images qui, je pense, est assez typique:
Bitmap bmp = new Bitmap(image, new Size(width, height));
Graphics graphics = Graphics.FromImage(bmp);
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.DrawImage(bmp, width, height);
Le problème est que les images obtenues sont clairement des alias et des changements à la InterpolationMode et SmoothingMode propriétés semblent pas faire de différence.
Les pointeurs?
OriginalL'auteur Nick Higgs | 2008-12-02
Vous devez vous connecter pour publier un commentaire.
Il transforme le code est tout simplement faux. C'était en fait le redimensionnement de l'image sans interpolation de l'image Bitmap constructeur, et ensuite d'essayer de redimensionner facilement que la version à la taille, il était déjà au. Voici le code amendé:
Autant que l'anti-aliasing va, le paramètre le plus important est
graph.InterpolationMode
.Grâce.
OriginalL'auteur Nick Higgs
Essayer de graphiques.DrawImage(bmp, 0, 0, largeur, hauteur);
Vérifiez également ce Article MSDN sur l'interpolation.
OriginalL'auteur Firas Assaad
L'Anti-aliasing n'a rien à voir avec des graphismes raster. C'est seulement applicable pour les graphiques vectoriels. De toute évidence, une image est un graphique raster.
Vous avez besoin de regarder InterpolationMode.
<la poursuite/>à Partir de Wikipedia: "En traitement numérique du signal, l'anti-aliasing est la technique de minimiser les distorsions connu comme l'aliasing à la représentation d'un signal à haute résolution avec une résolution plus basse."
Désolé, je me suis trompé dans le cas d' .Net Graphiques.SmoothingMode. Cette propriété n'est pertinente que pour les graphiques vectoriels.
OriginalL'auteur leppie
Le problème est peut-être un autre endroit. Je utiliser un code similaire pour redimensionner les images et ça marche ok, mais la plus grande différence est que lorsque vous enregistrez l'image, vous devez spécifier la qualité (jpeg):
OriginalL'auteur martinlund
Il y a un article sur CodeProject décrivant une amélioration de l'anticrénelage méthode:
OriginalL'auteur Dirk Vollmar