Reduzieren Sie die PNG-Dateigröße mit C#

Reduzieren Sie die PNG-Dateigröße mit C#

Systemspeicherung ist ein kritisches Thema in diesem modernen Technologiezeitalter. Die Datenmenge nimmt täglich zu und die visuelle Darstellung von Dateien erfreut sich großer Beliebtheit. Es gibt jedoch viele Möglichkeiten, Bilddateiformate zu komprimieren, aber die Bildqualität sollte nicht beeinträchtigt werden. Daher verwenden wir diese .NET-Bildkomprimierungs-API, um die PNG-Bilder zu komprimieren. In diesem Blogbeitrag erfahren Sie, wie Sie die Dateigröße PNG mithilfe von C# programmgesteuert reduzieren.

Wir werden die folgenden Punkte in diesem Artikel behandeln:

Installation der Bildkomprimierungs-API

Diese Bibliothek bietet eine breite Palette von Methoden und Eigenschaften zum Bearbeiten und Verarbeiten verschiedener Bilddateiformate wie JPEG, TIFF und mehr. Es gibt zwei Möglichkeiten, diese API in Ihrem .NET-Projekt zu installieren.

Daher können Sie die DLL-Dateien entweder herunterladen oder den folgenden Befehl im NuGet-Paketmanager ausführen.

Install-Package Aspose.Imaging

So reduzieren Sie die PNG-Dateigröße mit C

Sie können einen riesigen Stapel von Methoden und Eigenschaften hier sehen, um die Bilddateiformate zu komprimieren. Daher schreiben wir Schritte und das Code-Snippet, um die PNG-Datei programmgesteuert zu komprimieren.

Befolgen Sie die folgenden Schritte:

  1. Laden Sie das PNG-Quellbild, indem Sie die Methode Load aufrufen.
  2. Rufen Sie die Methode Save auf, um das komprimierte Bild im PNG-Format zu speichern.
  3. Legen Sie einen Wert für die Eigenschaft Progressive fest, der angibt, ob diese PngOptions progressiv ist.
  4. IndexedColor stellt den Farbtyp dar, wobei jedes Pixel ein Palettenindex ist.
  5. Weisen Sie den Wert von CompressionLevel zu, um die maximale Komprimierung festzulegen.
  6. Die Methode GetCloseImagePalette ruft eine Farbpalette aus dem Rasterbild ab (palettiert das Bild), falls das Bild keine hat. Falls eine Palette vorhanden ist, wird sie verwendet, anstatt Berechnungen durchzuführen.
// Laden Sie das PNG-Quellbild, indem Sie die Load-Methode aufrufen 
        using (Image image = Image.Load("image.png"))
        {
        // Rufen Sie die Save-Methode auf, um das komprimierte Bild im PNG-Format zu speichern  
            image.Save(out.png, new ImageOptions.PngOptions()
            {
            // Legen Sie einen Wert der Progressive-Eigenschaft fest, der angibt, ob diese PngOptions progressiv ist.
                Progressive = true,
            // IndexedColor stellt den Farbtyp dar, wobei jedes Pixel ein Palettenindex ist 
                ColorType = FileFormats.Png.PngColorType.IndexedColor,
            // Weisen Sie den Wert von CompressionLevel zu, um die maximale Komprimierung festzulegen 
                CompressionLevel = 9,
            // Die GetCloseImagePalette-Methode ruft die Farbpalette aus dem Rasterbild ab (palettiert das Bild), falls das Bild keine hat. Falls eine Palette vorhanden ist, wird sie verwendet, anstatt Berechnungen durchzuführen. 
                Palette = ColorPaletteHelper.GetCloseImagePalette((RasterImage)image, 256, PaletteMiningMethod.Histogram)
            });
        }

Bildkomprimierungs-API - erweiterte Optionen

Im vorherigen Abschnitt haben wir gelernt, wie man die PNG-Dateigröße mit C# reduziert. Lassen Sie uns nun einige andere bekannte Methoden und Eigenschaften dieser Bildkomprimierungs-API untersuchen. In diesem Abschnitt führen wir einen benutzerdefinierten API-Aufruf durch, um eine PNG-Datei programmgesteuert zu erstellen.

Sie können die Schritte und das unten erwähnte Code-Snippet befolgen:

  1. Initialisieren Sie eine Instanz der Klasse PngImage, die ein PNG-Bild mit 100 x 100 Pixel erstellt.
  2. Die Methode LinearGradientBrush kapselt einen Brush mit einem linearen Farbverlauf.
  3. Initialisiert eine neue Instanz der Struktur Point mit den angegebenen Koordinaten.
  4. Instanziieren Sie eine Instanz der Klasse Graphics, die die Grafiken gemäß der in der aktuellen Assembly verwendeten Grafik-Engine darstellt.
  5. Füllen Sie das Bild mit dem blau-transparenten Farbverlauf mit der Methode FillRectangle.
  6. Erstellen Sie ein Objekt der Klasse PngOptions.
  7. Legen Sie einen Wert für die Eigenschaft Progressive fest, der angibt, ob diese PngOptions progressiv ist.
  8. Sie können die horizontale und vertikale Auflösung auf 96 Pixel pro Zoll festlegen, indem Sie die Klasse ResolutionSetting initialisieren.
  9. Legen Sie den Farbtyp fest, indem Sie der Eigenschaft ColorType einen Wert zuweisen.
  10. Weisen Sie der Eigenschaft CompressionLevel einen Wert zu, um die maximale Komprimierungsstufe festzulegen.
  11. Die Eigenschaft FilterType legt den Filtertyp fest, der beim Speichern der PNG-Datei verwendet wird.
  12. Legen Sie die Anzahl der Bits pro Kanal fest, indem Sie der Eigenschaft BitDepth einen Wert zuweisen.
  13. Speichern Sie in einer Datei, indem Sie die Methode Save aufrufen.

    // Initialisieren Sie eine Instanz der PngImage-Klasse, die ein PNG-Bild mit 100 x 100 Pixel erstellt. 
    using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100))
    {
        // Die LinearGradientBrush-Methode kapselt einen Brush mit einem linearen Farbverlauf 
        Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
                // Initialisiert eine neue Instanz der Point-Struktur mit den angegebenen Koordinaten. 
                new Aspose.Imaging.Point(0, 0),
                new Aspose.Imaging.Point(pngImage.Width, pngImage.Height),
                Aspose.Imaging.Color.Blue,
                Aspose.Imaging.Color.Transparent);
        // Instanziieren Sie eine Instanz der Graphics-Klasse, die die Grafiken gemäß der in der aktuellen Assembly verwendeten Grafik-Engine darstellt.
        Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);

        // Füllen Sie das Bild mit dem blau-transparenten Farbverlauf mit der Methode FillRectangle . 
        graphics.FillRectangle(gradientBrush, pngImage.Bounds);
        // Erstellen Sie ein Objekt der PngOptions-Klasse 
        Aspose.Imaging.ImageOptions.PngOptions saveOptions = new Aspose.Imaging.ImageOptions.PngOptions();

        // legt einen Wert der Progressive-Eigenschaft fest, der angibt, ob diese PngOptions progressiv ist. 
        saveOptions.Progressive = true;

        // Legen Sie die horizontale und vertikale Auflösung auf 96 Pixel pro Zoll fest, indem Sie die ResolutionSetting-Klasse initialisieren. 
        saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);

        // Legen Sie den Typ der Farbe fest, indem Sie der Eigenschaft ColorType einen Wert zuweisen.
        saveOptions.ColorType = Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;

        // Weisen Sie der CompressionLevel-Eigenschaft einen Wert zu, um die maximale Komprimierungsstufe festzulegen. 
        saveOptions.CompressionLevel = 9;

        // Die FilterType-Eigenschaft legt den Filtertyp fest, der beim Speichern der PNG-Datei verwendet wird.
        saveOptions.FilterType = Aspose.Imaging.FileFormats.Png.PngFilterType.Adaptive;

        // Legen Sie die Anzahl der Bits pro Kanal fest, indem Sie der Eigenschaft BitDepth einen Wert zuweisen.
        saveOptions.BitDepth = 8;

        // Speichern Sie in einer Datei, indem Sie die Save-Methode aufrufen. 
        pngImage.Save( "output.png", saveOptions);
    }

Sie können die Ausgabe im folgenden Bild sehen:

Bildkomprimierungs-API

Holen Sie sich eine kostenlose Lizenz

Sie können eine kostenlose temporäre Lizenz erwerben, um die API ohne Evaluierungseinschränkungen zu testen.

Zusammenfassen

Wir können diesen Blogbeitrag hier beenden. Wir hoffen, Sie haben gelernt, wie Sie die PNG-Dateigröße mit C# programmgesteuert reduzieren. Darüber hinaus haben wir einige andere fortgeschrittene Methoden dieser Bildkomprimierungs-API durchlaufen, bei denen wir eine optimierte PNG-Datei erstellt haben. Sie können jedoch diesen link für weitere Methoden und Eigenschaften bezüglich des PNG-Dateiformats besuchen. Überspringen Sie vor allem nicht die Dokumentation dieser .NET-Bibliothek, um das Ökosystem kennenzulernen. Über weitere nützliche Themen werden wir in zukünftigen Blogbeiträgen schreiben. Bleiben Sie daher mit conholdate.com in Kontakt, um Updates zu erhalten.

Stelle eine Frage

Sie können uns Ihre Fragen oder Anliegen in unserem Forum mitteilen.

Häufig gestellte Fragen

Wie komprimiert man PNG-Bilder in C#?

Installieren Sie diese .NET-Bildkomprimierungs-API, um PNG-Dateiformate zu komprimieren und zu bearbeiten. Es bietet Methoden und Eigenschaften zum Komprimieren anderer gängiger Bilddateiformate wie JPEG, TIFF und mehr.

Wie kann die Bilddateigröße für das PNG-Format minimiert werden?

Mit dieser Methode können Sie die PNG-Dateigröße mithilfe von C# programmgesteuert reduzieren. Darüber hinaus können Sie den API-Aufruf gemäß Ihren Anforderungen konfigurieren.

Wie ändert man die Größe eines PNG-Bildes im C#-Codebeispiel?

Folgen Sie diesem link, um mehr über das Code-Snippet zu erfahren, das die Größe eines PNG-Bildes programmgesteuert ändert. Diese .NET-API ist leistungsstark und bietet eine große Auswahl an Methoden und Eigenschaften.

Siehe auch