Graphics-Objekt für image-Datei
Möchte ich zuschneiden und Größe ändern, mein Bild. Hier ist mein code:
Image image = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "Cropper/tests/castle.jpg");
//Crop and resize the image.
Rectangle destination = new Rectangle(0, 0, 200, 120);
Graphics graphic = Graphics.FromImage(image);
graphic.DrawImage(image, destination, int.Parse(X1.Value), int.Parse(Y1.Value), int.Parse(Width.Value), int.Parse(Height.Value), GraphicsUnit.Pixel);
Ich jetzt davon ausgehen, dass meine beschnittenen/verkleinerte Bild gespeichert wird, in der Grafiken Objekt. Die Frage ist, wie Speichere ich eine Datei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
Graphics
Objekt, dass Sie aus derGraphics.FromImage
ist eine Zeichnung Oberfläche für das Bild. So können Sie einfach speichern Sie das Bild-Objekt aus, wenn Sie fertig sind.Beachten Sie jedoch, dass dies immer wieder auf ein jpg-Bild kann nicht eine gute Sache; das Bild wird re-codiert, jedes mal und da jpg verwendet eine zerstörende Kompression Methode verlieren Sie etwas Bildqualität jeder Zeit. Ich würde nicht befürchten, dass, wenn dies ist ein einmal-pro-Bild-Betrieb wenn.
Nein, die
Graphics
- Objekt enthält keine Bilddaten, die verwendet wird, um zu zeichnen auf eine Leinwand, die in der Regel ist der Bildschirm oder einBitmap
Objekt.So, müssen Sie erstellen eine
Bitmap
Objekt mit der richtigen Größe zu zeichnen, und erstellen Sie dieGraphics
- Objekt für die bitmap. Dann können Sie es speichern. Denken Sie daran, dass die Objekt-ImplementierungIDisposable
sollte entsorgt werden, zum Beispiel mit derusing
Klausel:Dies ist keine direkte Antwort auf die OP-Frage, aber es ist ein oft übersehener Werkzeug, das Ihnen erlauben kann, an Dinge Herangehen, in einer anderen Art und Weise, sollte das als notwendig erweisen.
Es wird oft gesagt, dass es nicht möglich ist, um den Inhalt des Graphics-Objekt. Das ist überhaupt nicht wahr. Mit dem richtigen Ansatz, können Sie access-Daten auf einer Leinwand, mit HDC und BitBlt. Hier ist ein Weg, es zu tun mit C#: