Heim > Backend-Entwicklung > C++ > Wie kann ich Bilder in C# ändern und gleichzeitig eine optimale Qualität beibehalten?

Wie kann ich Bilder in C# ändern und gleichzeitig eine optimale Qualität beibehalten?

Mary-Kate Olsen
Freigeben: 2025-01-31 01:06:10
Original
261 Leute haben es durchsucht

How to Resize Images in C# While Maintaining Optimal Quality?

hochwertiges Bild-Größenänderung in C#

Die Größe des Änderns von Bildern in C# beinhaltet häufig die Verwendung der System.Drawing.Image -Klasses Size, Width und Height

. Ein einfacher Größenansatz kann jedoch die Bildqualität beeinträchtigen. Verwenden Sie für optimale Ergebnisse eine komplexere Methode wie die folgende:
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;
}
Nach dem Login kopieren

Diese Methode nutzt mehrere Schlüsselmerkmale, um eine qualitativ hochwertige Größenänderung sicherzustellen:
  • wrapMode.SetWrapMode(WrapMode.TileFlipXY) :
  • eliminiert Artefakte (Ghosting) an den Bildkanten, indem das Bild während des Skalierungsprozesses spiegelt.
  • destImage.SetResolution(...) :
  • bewahrt den DPI des Bildes (Punkte pro Zoll), entscheidend für die Aufrechterhaltung der Qualität bei der Verringerung der Größe oder der Vorbereitung auf den Druck.
  • hochwertige Grafikeinstellungen: CompositingQuality InterpolationMode, SmoothingMode, PixelOffsetMode und HighQuality sind alle auf HighQualityBicubic oder
  • für überlegenes Rendering eingestellt.

Wichtige Überlegungen:

destImage.Save(...) Diese Funktion verwaltet das Seitenverhältnis nicht von Natur aus. Sie müssen diesen Aspekt selbst bewältigen, um Verzerrungen zu verhindern. Denken Sie außerdem daran, dass das Speichern des geendelten Bildes (z. B. mit

) auch die Qualität beeinflussen kann. Wenden Sie sich an externe Ressourcen für Best Practices in Bildeinsparungsformaten und Komprimierungsstufen.

Das obige ist der detaillierte Inhalt vonWie kann ich Bilder in C# ändern und gleichzeitig eine optimale Qualität beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage