Maison >développement back-end >C++ >Comment redimensionner les images en C # tout en maintenant une qualité optimale?
Redimensionnement d'images de haute qualité en C #
Les images de redimensionnement en C # impliquent souvent l'utilisation des propriétés System.Drawing.Image
de la classe Size
, Width
et Height
. Cependant, une approche de redimensionnement simple peut compromettre la qualité d'image. Pour des résultats optimaux, utilisez une méthode plus sophistiquée comme celle ci-dessous:
<code class="language-csharp">public static Bitmap ResizeImage(Image image, int width, int height) { var destRect = new Rectangle(0, 0, width, height); var destImage = new Bitmap(width, height); destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution); using (var graphics = Graphics.FromImage(destImage)) { graphics.CompositingMode = CompositingMode.SourceCopy; graphics.CompositingQuality = CompositingQuality.HighQuality; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; using (var wrapMode = new ImageAttributes()) { wrapMode.SetWrapMode(WrapMode.TileFlipXY); graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode); } } return destImage; }</code>
Cette méthode exploite plusieurs fonctionnalités clés pour assurer le redimensionnement de haute qualité:
wrapMode.SetWrapMode(WrapMode.TileFlipXY)
: élimine les artefacts (fantômes) sur les bords de l'image en reflétant l'image pendant le processus de mise à l'échelle. destImage.SetResolution(...)
: Préserve le DPI de l'image (points par pouce), crucial pour maintenir la qualité lors de la réduction de la taille ou de la préparation de l'impression. CompositingQuality
, InterpolationMode
, SmoothingMode
, et PixelOffsetMode
sont tous définis sur HighQuality
ou HighQualityBicubic
pour le rendu supérieur. Considérations importantes:
Cette fonction ne gére pas intrinsèquement le rapport d'aspect; Vous devrez gérer vous-même cet aspect pour éviter la distorsion. De plus, n'oubliez pas que la sauvegarde de l'image redimensionnée (par exemple, en utilisant destImage.Save(...)
) peut également avoir un impact sur la qualité. Consulter les ressources externes pour les meilleures pratiques dans les formats d'économie d'image et les niveaux de compression.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!