Ich möchte ein Bild in C # mit einer so guten Qualitätsstufe wie Photoshop skalieren. Gibt es dafür eine C # -Bildverarbeitungsbibliothek?
c#
image
image-processing
image-manipulation
image-scaling
Ramesh Soni
quelle
quelle
Antworten:
Hier ist eine gut kommentierte Bildmanipulations-Hilfsklasse, die Sie ansehen und verwenden können. Ich habe es als Beispiel dafür geschrieben, wie bestimmte Bildbearbeitungsaufgaben in C # ausgeführt werden. Sie interessieren sich für die ResizeImage- Funktion, die ein System.Drawing.Image, die Breite und die Höhe als Argumente verwendet.
Aktualisieren
Einige Leute haben in den Kommentaren nach Beispielen gefragt, wie die ImageUtilities-Klasse verwendet werden soll.
Hinweis
Denken Sie daran, dass Bilder verfügbar sind. Daher müssen Sie das Ergebnis Ihrer Größenänderung einer using-Deklaration zuordnen (oder Sie können einen Versuch endgültig verwenden und sicherstellen, dass Sie in Ihrer Endgültigkeit Dispose aufrufen).
quelle
Wenn Sie das Bild mit GDI + zeichnen, skaliert es meiner Meinung nach recht gut. Sie können dies verwenden, um ein skaliertes Bild zu erstellen.
Wenn Sie Ihr Bild mit GDI + skalieren möchten, können Sie Folgendes tun:
quelle
new Size
in der Erklärung weglassenscaled
:new Bitmap(original.Width * 4, original.Height * 4);
Getestete Bibliotheken wie Imagemagick und GD sind für .NET verfügbar
Sie können sich auch über Dinge wie die bikubische Interpolation informieren und Ihre eigenen schreiben.
quelle
CodeProject-Artikel zum Erläutern und Freigeben von Quellcode zum Skalieren von Bildern:
quelle
Verwenden Sie diese Bibliothek: http://imageresizing.net
Lesen Sie diesen Artikel des Bibliotheksautors: 20 Fallstricke bei der Bildgröße mit .NET
quelle
Probieren Sie die verschiedenen Werte für Graphics.InterpolationMode aus. In GDI + stehen mehrere typische Skalierungsalgorithmen zur Verfügung. Wenn eine davon für Ihren Bedarf ausreicht, können Sie diesen Weg gehen, anstatt sich auf eine externe Bibliothek zu verlassen.
quelle
Sie können dotImage ausprobieren , eines der Produkte meines Unternehmens, das ein Objekt zum erneuten Abtasten von Bildern enthält, das 18 Filtertypen für verschiedene Qualitätsstufen enthält.
Typische Verwendung ist:
Darüber hinaus enthält dotImage einige ungerade Bildverarbeitungsbefehle, darunter viele Filter, die denen in PhotoShop ähneln, wenn Sie danach suchen.
quelle
Dies könnte helfen
Beachten Sie, dass
InterpolationMode.HighQualityBicubic
-> dies im Allgemeinen ein guter Kompromiss zwischen Leistung und Ergebnissen ist.quelle
Versuchen Sie dieses grundlegende Code-Snippet:
quelle
Es gibt einen Artikel über Code Project über die Verwendung von GDI + für .NET, um die Größe von Fotos mithilfe von beispielsweise bikubischer Interpolation zu ändern.
Es gab auch einen anderen Artikel zu diesem Thema in einem anderen Blog (MS-Mitarbeiter, glaube ich), aber ich kann den Link nirgendwo finden. :( Vielleicht kann es jemand anderes finden?
quelle
Sie können dies versuchen, wenn es sich um einen 2D- Bildfilter mit niedriger Auflösung handelt
quelle
Dies ist ein Artikel, auf den ich im Code von Paint.NET für das Resampling von Bildern verwiesen habe: Verschiedene einfache Bildverarbeitungstechniken von Paul Bourke.
quelle
Sie könnten den magischen Kernel ausprobieren . Es erzeugt beim Hochskalieren weniger Pixelartefakte als das bikubische Resample und liefert auch beim Herunterskalieren sehr gute Ergebnisse. Der Quellcode ist in c # auf der Website verfügbar.
quelle
Ich habe einige Verbesserungen für Doktor Jones 'Antwort.
Es funktioniert für diejenigen, die eine proportionale Größenänderung des Bildes wünschen. Es hat für mich getestet und funktioniert.
Die Methoden der Klasse, die ich hinzugefügt habe:
und neu verfügbar unter Verwendung dieser Codes:
quelle