Ändern Sie die Größe eines Bildes in C#

Muhammad Maisam Abbas 16 Februar 2024
  1. Ändern der Größe eines Bildes mit der Bitmap-Klasse in C#
  2. Ändern der Größe eines Bildes mit der Graphics.DrawImage()-Funktion in C#
  3. Fazit
Ändern Sie die Größe eines Bildes in C#

In diesem Tutorial werden Methoden zum Ändern der Größe eines Bildes in C# diskutiert.

Wir werden den gesamten Prozess durchgehen, vom Laden des Originalbildes bis zum Speichern der verkleinerten Version.

Ändern der Größe eines Bildes mit der Bitmap-Klasse in C#

Die Bitmap-Klasse bietet viele Methoden zur Arbeit mit Bildern in C#. Die Bitmap-Klasse erhält die Pixeldaten der Bilder. Wir können ein Bild verkleinern, indem wir den Size-Parameter im Konstruktor der Bitmap-Klasse initialisieren.

Das folgende Codebeispiel zeigt, wie wir ein Bild mit dem Konstruktor der Bitmap-Klasse in C# verkleinern können.

using System;
using System.Drawing;
namespace resize_image {
  class Program {
    public static Image resizeImage(Image imgToResize, Size size) {
      return (Image)(new Bitmap(imgToResize, size));
    }
    static void Main(string[] args) {
      string path = "C:\\Images\\img1.jpg";
      Image img = Image.FromFile(path);
      Bitmap imgbitmap = new Bitmap(img);
      Image resizedImage = resizeImage(imgbitmap, new Size(200, 200));
    }
  }
}

Dieser Code zeigt den vollständigen Prozess des Verkleinerns eines Bildes mit der Bitmap-Klasse in C#. Lassen Sie uns erläutern, wie es funktioniert.

Schritt 1: Laden Sie das Originalbild

Zunächst müssen Sie das Originalbild mit der Methode Image.FromFile laden. Stellen Sie sicher, dass Sie "C:\\Images\\img1.jpg" durch den Pfad zu Ihrer eigenen Bilddatei ersetzen.

string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);

Schritt 2: Konvertieren Sie das Bild in eine Bitmap

Als nächstes konvertieren Sie das geladene Bild in ein Bitmap-Objekt. Dieser Schritt ist erforderlich, um die Änderung der Größe durchführen zu können.

Bitmap imgBitmap = new Bitmap(img);

Schritt 3: Ändern Sie die Größe des Bildes

Nun kommt der Teil der Größenänderung. Die Funktion ResizeImage nimmt das Bitmap-Objekt und die gewünschte Größe (new Size(200, 200)) entgegen und gibt das verkleinerte Bild zurück.

Image resizedImage = ResizeImage(imgBitmap, new Size(200, 200));

Schritt 4: Speichern Sie das verkleinerte Bild

Abschließend können Sie das verkleinerte Bild mit der Methode Save in eine Datei speichern. In diesem Beispiel wird das verkleinerte Bild als "resized.jpg" gespeichert. Sie können das Format des gespeicherten Bildes ändern, indem Sie die Dateierweiterung (z. B. .jpg, .png, .bmp) ändern.

resizedImage.Save("resized.jpg");

Ändern der Größe eines Bildes mit der Graphics.DrawImage()-Funktion in C#

Die Graphics.DrawImage()-Funktion zeichnet ein Bild an einer angegebenen Position mit angegebenen Abmessungen in C#. Mit dieser Methode können viele Nachteile des Bildgrößenänderns beseitigt werden. Das folgende Codebeispiel zeigt, wie wir ein Bild mit der Graphics.DrawImage()-Funktion in C# verkleinern können.

using System;
using System.Drawing;
namespace resize_image {
  class Program {
    public static Image resizeImage(Image image, int width, int height) {
      var destinationRect = new Rectangle(0, 0, width, height);
      var destinationImage = new Bitmap(width, height);

      destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);

      using (var graphics = Graphics.FromImage(destinationImage)) {
        graphics.CompositingMode = CompositingMode.SourceCopy;
        graphics.CompositingQuality = CompositingQuality.HighQuality;

        using (var wrapMode = new ImageAttributes()) {
          wrapMode.SetWrapMode(WrapMode.TileFlipXY);
          graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height,
                             GraphicsUnit.Pixel, wrapMode);
        }
      }

      return (Image)destinationImage;
    }
    static void Main(string[] args) {
      string path = "C:\\Images\\img1.jpg";
      Image img = Image.FromFile(path);
      Bitmap imgbitmap = new Bitmap(img);
      Image resizedImage = resizeImage(imgbitmap, new Size(200, 200));
    }
  }
}

Lassen Sie uns erläutern, wie es funktioniert.

Schritt 1: Laden Sie das Originalbild

Zunächst müssen Sie das Originalbild mit Image.FromFile laden. Stellen Sie sicher, dass Sie "C:\\Images\\img1.jpg" durch den Pfad zu Ihrer eigenen Bilddatei ersetzen.

string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);

Schritt 2: Erstellen Sie eine Ziel-Bitmap

Erstellen Sie ein Ziel-Bitmap-Objekt, das das verkleinerte Bild aufnehmen wird. Legen Sie seine Auflösung mit SetResolution auf die des Originalbildes fest.

Die Funktion destinationImage.SetResolution() behält die dpi des Bildes unabhängig von seiner tatsächlichen Größe bei.

var destinationRect = new Rectangle(0, 0, width, height);
var destinationImage = new Bitmap(width, height);

destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);

Schritt 3: Ändern der Bildgröße

Jetzt verwenden wir Graphics.FromImage, um ein Graphics-Objekt zu erhalten, das mit dem Ziel-Bitmap verbunden ist. Wir stellen den Zusammensetzungsmodus und die Qualität für die besten Ergebnisse ein.

using (var graphics = Graphics.FromImage(destinationImage)) {
  graphics.CompositingMode = CompositingMode.SourceCopy;
  graphics.CompositingQuality = CompositingQuality.HighQuality;

  using (var wrapMode = new ImageAttributes()) {
    wrapMode.SetWrapMode(WrapMode.TileFlipXY);
    graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel,
                       wrapMode);
  }
}

Die Eigenschaft graphics.CompositingMode = CompositingMode.SourceCopy gibt an, dass beim Rendern einer Farbe die Hintergrundfarbe überschrieben wird.

Die Eigenschaft graphics.CompositingQuality = CompositingQuality.HighQuality gibt an, dass nur hochwertige Bilder gerendert werden sollen.

Die Funktion wrapMode.SetWrapMode(WrapMode.TileFlipXY) verhindert Geisterbilder um die Bildränder.

Schritt 4: Speichern des geänderten Bildes

Schließlich kann das geänderte Bild mit der Save-Methode in einer Datei gespeichert werden. In diesem Beispiel wird das geänderte Bild als "resized.jpg" gespeichert. Sie können das Format des gespeicherten Bildes ändern, indem Sie die Dateierweiterung ändern (z.B. .jpg, .png, .bmp).

resizedImage.Save("resized.jpg");

Fazit

Die Änderung der Bildgröße ist eine häufige Aufgabe in der Softwareentwicklung und C# bietet mehrere Ansätze, um dies zu erreichen. In diesem Artikel haben wir uns auf die Änderung der Bildgröße mithilfe der Bitmap-Klasse konzentriert. Wir haben den gesamten Prozess durchgegangen, vom Laden des Originalbildes bis zum Speichern der geänderten Version.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Verwandter Artikel - Csharp Image