Bild Größenänderung in .Net mit Antialiasing
Ich habe einige C# - code, der verändert die Größe der Bilder, die ich denke, ist ziemlich typisch:
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);
Das problem ist, dass die daraus resultierenden Bilder sind eindeutig Aliasing und änderungen an der InterpolationMode und SmoothingMode Eigenschaften scheinen keinen Unterschied zu machen.
Irgendwelche Hinweise?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es stellt sich der code wurde einfach falsch. Es war tatsächlich die Größe des Bild ohne interpolation in der Bitmap-Konstruktor, und dann versuchen, reibungslos skalieren, dass die version, die der Größe war es bereits an. Hier ist der geänderte code:
So weit wie anti-aliasing geht, der wichtigste parameter ist
graph.InterpolationMode
.Dank.
Versuchen Grafiken.DrawImage(bmp, 0, 0, width, height);
Überprüfen Sie auch diese MSDN-Artikel über interpolation.
Anti-aliasing hat nichts zu tun mit raster-Grafiken. Es ist nur anwendbar für Vektor-Grafiken. Offensichtlich, ein Bild ist ein raster-Grafik.
Müssen Sie sich InterpolationMode.
Könnte das problem sein, einen anderen Ort. Ich benutze ähnlichen code, um die Größe der Bilder und es funktioniert ok, aber der größte Unterschied ist, dass, wenn Sie das Bild speichern, müssen Sie angeben, Qualität (jpeg):
Gibt es einen Artikel auf CodeProject beschreibt ein verbessertes Anti-Aliasing-Methode: