Wie Size
, Width
und Height
sind Get()
Eigenschaften System.Drawing.Image
;
Wie kann ich die Größe eines Image-Objekts zur Laufzeit in C # ändern?
Im Moment erstelle ich eine neue Image
Verwendung mit:
// objImage is the original Image
Bitmap objBitmap = new Bitmap(objImage, new Size(227, 171));
Antworten:
Dadurch wird eine qualitativ hochwertige Größenänderung durchgeführt:
wrapMode.SetWrapMode(WrapMode.TileFlipXY)
Verhindert Geisterbilder an den Bildrändern. Durch naive Größenänderung werden transparente Pixel über die Bildgrenzen hinaus abgetastet. Durch Spiegeln des Bildes erhalten wir jedoch ein besseres Sample (diese Einstellung ist sehr auffällig).destImage.SetResolution
behält die DPI unabhängig von der physischen Größe bei - kann die Qualität beim Reduzieren der Bildabmessungen oder beim Drucken erhöhengraphics.CompositingMode
Legt fest, ob Pixel aus einem Quellbild überschrieben oder mit Hintergrundpixeln kombiniert werden.SourceCopy
Gibt an, dass beim Rendern einer Farbe die Hintergrundfarbe überschrieben wird.graphics.CompositingQuality
bestimmt die Renderqualitätsstufe von überlagerten Bildern.graphics.InterpolationMode
legt fest, wie Zwischenwerte zwischen zwei Endpunkten berechnet werdengraphics.SmoothingMode
Gibt an, ob Linien, Kurven und Kanten gefüllter Bereiche geglättet werden (auch als Antialiasing bezeichnet) - funktioniert wahrscheinlich nur bei Vektorengraphics.PixelOffsetMode
Beeinflusst die Renderqualität beim Zeichnen des neuen BildesDas Beibehalten des Seitenverhältnisses bleibt dem Leser als Übung (eigentlich glaube ich nicht, dass es die Aufgabe dieser Funktion ist, dies für Sie zu tun).
Auch dies ist ein guter Artikel einige der Gefahren mit Skalierung von Bildern beschreibt. Die obige Funktion deckt die meisten von ihnen ab, aber Sie müssen sich immer noch um das Speichern kümmern .
quelle
Bitmap
Ist im Wesentlichen nur der Name der Klasse, können Sie sie als beliebigen Dateityp speichern.System.Drawing
hinzufügen und hinzufügenusing System.Drawing.Imaging;
Sie sind sich nicht sicher, was daran so schwierig ist. Machen Sie das, was Sie getan haben. Verwenden Sie den überladenen Bitmap-Konstruktor, um ein Bild in neuer Größe zu erstellen. Das einzige, was Ihnen fehlte, war eine Rückbesetzung in den Bilddatentyp:
quelle
yourImage
bevor Sie es dem neuen Bild zuweisen?In dieser Frage haben Sie einige Antworten, einschließlich meiner:
quelle
Warum nicht die
System.Drawing.Image.GetThumbnailImage
Methode anwenden?Beispiel:
Quelle: http://msdn.microsoft.com/en-us/library/system.drawing.image.getthumbnailimage.aspx
quelle
Sie können net-vips ausprobieren , die C # -Bindung für libvips . Es handelt sich um eine faule, Streaming- und bedarfsgesteuerte Bildverarbeitungsbibliothek, mit der solche Vorgänge ausgeführt werden können, ohne dass das gesamte Bild geladen werden muss.
Zum Beispiel wird ein praktischer Miniaturbildbildschirm mitgeliefert:
Es unterstützt auch Smart Crop, eine Möglichkeit, den wichtigsten Teil des Bildes intelligent zu bestimmen und es beim Zuschneiden des Bildes scharf zu halten. Beispielsweise:
Wo
owl.jpg
ist eine außermittige Komposition:Gibt dieses Ergebnis:
Zuerst wird das Bild verkleinert, um die vertikale Achse auf 128 Pixel zu bringen, und dann mithilfe der
attention
Strategie auf 128 Pixel verkleinert . Dieser durchsucht das Bild nach Merkmalen, die ein menschliches Auge auf sich ziehen könnten. WeitereSmartcrop()
Informationen finden Sie hier.quelle
Dieser Wille -
////////////////
quelle
quelle
Low
?Dieser Code ist der gleiche wie in einer der obigen Antworten. Er konvertiert jedoch transparente Pixel in Weiß anstelle von Schwarz ... Danke :)
quelle
In der von mir erstellten Anwendung musste eine Funktion mit mehreren Optionen erstellt werden. Es ist ziemlich groß, ändert jedoch die Bildgröße, kann das Seitenverhältnis beibehalten und die Kanten abschneiden, um nur die Bildmitte zurückzugeben:
Um den Zugriff auf die Funktion zu vereinfachen, können einige überladene Funktionen hinzugefügt werden:
Jetzt können die letzten beiden Booleschen Werte optional festgelegt werden. Rufen Sie die Funktion folgendermaßen auf:
quelle
Klicken Sie hier http://bhupendrasinghsaini.blogspot.in/2014/07/resize-image-in-c.html
quelle
Dies ist der Code, den ich für eine bestimmte Anforderung ausgearbeitet habe, dh: Das Ziel befindet sich immer im Querformat. Es sollte Ihnen einen guten Start geben.
quelle
Wenn Sie mit einem arbeiten
BitmapSource
:Wenn Sie eine genauere Kontrolle über die Qualität wünschen, führen Sie zuerst Folgendes aus:
(Die Standardeinstellung
BitmapScalingMode.Linear
entsprichtBitmapScalingMode.LowQuality
.)quelle
Ich benutze ImageProcessorCore, hauptsächlich weil es .Net Core funktioniert.
Und es gibt mehr Optionen wie das Konvertieren von Typen, das Zuschneiden von Bildern und vieles mehr
quelle
Ändern Sie die Größe und speichern Sie ein Bild so, dass es wie eine Leinwand unter Breite und Höhe passt und das Bild proportional bleibt
quelle
Verwenden Sie die folgende Funktion mit dem folgenden Beispiel, um die Bildgröße zu ändern:
quelle
Sie können hierfür das Accord.NET-Framework verwenden . Es bietet verschiedene Methoden zum Ändern der Größe:
quelle
Hinweis: Dies funktioniert nicht mit ASP.Net Core, da WebImage von System.Web abhängt. In früheren Versionen von ASP.Net habe ich dieses Snippet jedoch häufig verwendet und war nützlich.
quelle