PNG-bestandsgrootte verkleinen met C#

Verklein de PNG-bestandsgrootte met C#

Systeemopslag is een cruciaal onderwerp in dit moderne tijdperk van technologie. De hoeveelheid data neemt elke dag toe en de visuele weergave van databestanden wint enorm aan populariteit. Er zijn echter veel manieren om afbeeldingsbestandsindelingen te comprimeren, maar de beeldkwaliteit mag niet worden aangetast. Daarom zullen we deze [.NET beeldcompressie-API][1] gebruiken om de PNG-afbeeldingen te comprimeren. In deze blogpost leren we hoe je [PNG][2]-bestandsgrootte kunt verkleinen met behulp van C# programmatisch. In dit artikel behandelen we de volgende punten:

  • [API-installatie voor beeldcompressie][3]
  • [PNG-bestandsgrootte verkleinen met C#][4]
  • [API voor beeldcompressie - geavanceerde opties][5]

API-installatie voor afbeeldingscompressie

Deze bibliotheek biedt een breed scala aan methoden en eigenschappen voor het manipuleren en verwerken van verschillende afbeeldingsbestandsindelingen, zoals [JPEG][29], [TIFF][30] en meer. Er zijn twee manieren om deze API in uw .NET-project te installeren. Daarom kunt u de DLL-bestanden [downloaden][6] of de volgende opdracht uitvoeren in de [NuGet][7] pakketbeheerder.

Install-Package Aspose.Imaging

Hoe PNG-bestandsgrootte te verkleinen met C#

Je kunt [hier][8] een enorme stapel methoden en eigenschappen zien om de afbeeldingsbestandsindelingen te comprimeren. Daarom zullen we stappen en het codefragment schrijven om het PNG-bestand programmatisch te comprimeren. Volg de volgende stappen:

  1. Laad de PNG-bronafbeelding door de methode [Load][9] aan te roepen.
  2. Gebruik de methode [Opslaan][10] om de gecomprimeerde afbeelding in PNG-indeling op te slaan.
  3. Stel een waarde in voor de eigenschap [Progressive][11] die aangeeft of deze PngOptions progressief is.
  4. [IndexedColor][12] vertegenwoordigt het kleurtype waarbij elke pixel een paletindex is.
  5. Wijs de waarde van [CompressionLevel][13] toe om de maximale compressie in te stellen.
  6. De methode [GetCloseImagePalette][14] haalt een kleurenpalet uit de rasterafbeelding (palletiseert afbeelding) voor het geval de afbeelding er geen heeft. Als er een palet bestaat, wordt dit gebruikt in plaats van berekeningen uit te voeren.
    // Load the source PNG image by calling the Load method
    using (Image image = Image.Load("image.png"))
    {
    // Invoke the Save method to save the compressed image in PNG format
    image.Save(out.png, new ImageOptions.PngOptions()
    {
    // Set a value of Progressive property that indicates whether this PngOptions is progressive.
    Progressive = true,
    // IndexedColor represents the color type where each pixel is a palette index
    ColorType = FileFormats.Png.PngColorType.IndexedColor,
    // Assign the value of CompressionLevel to set the maximum compression
    CompressionLevel = 9,
    // GetCloseImagePalette method will get color palette from raster image (palletizes image) in case the image does not have one. In case palette exists it will be used instead performing calculations.
    Palette = ColorPaletteHelper.GetCloseImagePalette((RasterImage)image, 256, PaletteMiningMethod.Histogram)
    });
    }

API voor beeldcompressie - geavanceerde opties

In het vorige gedeelte hebben we geleerd hoe je PNG-bestandsgrootte kunt verkleinen met C#. Laten we nu eens kijken naar enkele andere prominente methoden en eigenschappen van deze beeldcompressie-API. In deze sectie zullen we een aangepaste API-aanroep doen om programmatisch een PNG-bestand te maken. U kunt de onderstaande stappen en het onderstaande codefragment volgen:

  1. Initialiseer een instantie van de klasse [PngImage][15] die een PNG-afbeelding van 100x100 px maakt.
  2. De methode [LinearGradientBrush][16] kapselt een penseel in met een lineair verloop.
  3. Initialiseert een nieuwe instantie van de structuur [Punt][17] met de opgegeven coördinaten.
  4. Instantiseer een instantie van de klasse [Graphics][18] die de grafische weergave vertegenwoordigt volgens de grafische engine die in de huidige assembly wordt gebruikt.
  5. Vul de afbeelding met het blauw-transparante verloop met de methode [FillRectangle][19].
  6. Maak een object van de klasse [PngOptions][20].
  7. Stel een waarde in voor de eigenschap [Progressive][11] die aangeeft of deze PngOptions progressief is.
  8. U kunt de horizontale en verticale resolutie instellen op 96 pixels per inch door de klasse [ResolutionSetting][21] te initialiseren.
  9. Stel het kleurtype in door een waarde toe te wijzen aan de eigenschap [ColorType][22].
  10. Wijs een waarde toe aan de eigenschap [CompressionLevel][13] om het maximale compressieniveau in te stellen.
  11. De eigenschap [FilterType][23] stelt het filtertype in dat wordt gebruikt tijdens het opslaan van PNG-bestanden.
  12. Stel het aantal bits per kanaal in door een waarde toe te wijzen aan de eigenschap [BitDepth][24].
  13. Sla op in een bestand door de methode [Opslaan][10] aan te roepen.
    // Initialize an instance of PngImage class that creates a PNG image of 100x100 px.
    using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100))
    {
    // LinearGradientBrush method encapsulates a Brush with a linear gradient
    Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
    // Initializes a new instance of the Point structure with the specified coordinates.
    new Aspose.Imaging.Point(0, 0),
    new Aspose.Imaging.Point(pngImage.Width, pngImage.Height),
    Aspose.Imaging.Color.Blue,
    Aspose.Imaging.Color.Transparent);
    // Intantiate an instance of Graphics class that represents the graphics according to the graphics engine used in the current assembly.
    Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);
    // Fill the image with the blue-transparent gradient with FillRectangle method .
    graphics.FillRectangle(gradientBrush, pngImage.Bounds);
    // Create an object of the PngOptions class
    Aspose.Imaging.ImageOptions.PngOptions saveOptions = new Aspose.Imaging.ImageOptions.PngOptions();
    // sets a value of Progressive property that indicates whether this PngOptions is progressive.
    saveOptions.Progressive = true;
    // Set the horizontal and vertical resolution to 96 pixels per inch by initializing the ResolutionSetting class.
    saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);
    // set the type of the color by assiging a value to the ColorType property .
    saveOptions.ColorType = Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
    // Assign a value to the CompressionLevel property to set the maximum level of compression.
    saveOptions.CompressionLevel = 9;
    // FilterType property sets the filter type used during png file save process.
    saveOptions.FilterType = Aspose.Imaging.FileFormats.Png.PngFilterType.Adaptive;
    // set the number of bits per channel by assiging a value to the BitDepth property.
    saveOptions.BitDepth = 8;
    // Save to a file by calling the Save method.
    pngImage.Save( "output.png", saveOptions);
    }
    Je kunt de uitvoer zien in de onderstaande afbeelding:
    beeldcompressie-API

Ontvang een gratis licentie

U kunt een [gratis tijdelijke licentie][25] krijgen om de API zonder evaluatiebeperkingen uit te proberen.

Opsommen

We kunnen deze blogpost hier beëindigen. We hopen dat je hebt geleerd hoe je PNG-bestanden programmatisch kunt verkleinen met C#. Daarnaast hebben we enkele andere geavanceerde methoden van deze afbeeldingscompressie-API doorlopen, waarbij we een geoptimaliseerd PNG-bestand hebben gemaakt. U kunt deze [link][26] echter bezoeken voor meer methoden en eigenschappen met betrekking tot het PNG-bestandsformaat. Sla vooral de [documentatie][1] van deze .NET-bibliotheek niet over om het ecosysteem te leren kennen. We zullen in toekomstige blogposts over andere nuttige onderwerpen schrijven. Houd daarom contact met [conholdate.com][27] voor updates.

Een vraag stellen

U kunt uw vragen of opmerkingen aan ons doorgeven op ons [forum][28].

Veelgestelde vragen

Hoe PNG-afbeelding comprimeren in C#? Installeer deze [.NET-beeldcompressie-API][1] om PNG-bestandsindelingen te comprimeren en te manipuleren. Het biedt methoden en eigenschappen om andere populaire bestandsindelingen voor afbeeldingen te comprimeren, zoals [JPEG][29], [TIFF][30] en meer. Hoe de grootte van het afbeeldingsbestand voor PNG-indeling minimaliseren? Met deze [methode][14] kunt u de PNG-bestandsgrootte programmatisch verkleinen met behulp van C#. Bovendien kunt u de API-aanroep configureren volgens uw vereisten. Hoe het formaat van een PNG-afbeelding wijzigen in C#-codevoorbeeld? Volg deze [link][31] om meer te weten te komen over het codefragment dat het formaat van een PNG-afbeelding programmatisch wijzigt. Deze .NET API is krachtig en biedt een breed scala aan methoden en eigenschappen.

Zie ook