Riduci le dimensioni del file PNG usando C#

Riduci le dimensioni del file PNG usando C#

L’archiviazione di sistema è un argomento critico in questa moderna era della tecnologia. La quantità di dati aumenta ogni giorno e la rappresentazione visiva dei file di dati ha guadagnato molta popolarità. Tuttavia, ci sono molti modi per comprimere i formati di file immagine, ma la qualità dell’immagine non dovrebbe essere compromessa. Pertanto, utilizzeremo questa API di compressione delle immagini .NET per comprimere le immagini PNG. In questo post del blog impareremo come ridurre le dimensioni del file PNG usando C# a livello di codice.

Tratteremo i seguenti punti in questo articolo:

Installazione dell’API di compressione delle immagini

Questa libreria offre un’ampia gamma di metodi e proprietà per manipolare ed elaborare vari formati di file immagine come JPEG, TIFF e altri. Esistono due modi per installare questa API nel progetto .NET.

Pertanto, puoi scaricare i file DLL o eseguire il comando seguente nel gestore di pacchetti NuGet.

Install-Package Aspose.Imaging

Come ridurre le dimensioni del file PNG usando C#

Puoi vedere un’enorme pila di metodi e proprietà qui per comprimere i formati dei file immagine. Pertanto, scriveremo i passaggi e lo snippet di codice per comprimere il file PNG a livello di codice.

Segui i seguenti passaggi:

  1. Carica l’immagine PNG di origine chiamando il metodo Load.
  2. Richiamare il metodo Save per salvare l’immagine compressa in formato PNG.
  3. Imposta un valore della proprietà Progressive che indichi se questo PngOptions è progressivo.
  4. IndexedColor rappresenta il tipo di colore in cui ogni pixel è un indice della tavolozza.
  5. Assegna il valore di CompressionLevel per impostare la compressione massima.
  6. Il metodo GetCloseImagePalette otterrà una tavolozza di colori dall’immagine raster (pallettizza l’immagine) nel caso in cui l’immagine non ne abbia una. Se esiste una tavolozza, verrà utilizzata invece di eseguire calcoli.
// Carica l'immagine PNG di origine chiamando il metodo Load 
        using (Image image = Image.Load("image.png"))
        {
        // Richiamare il metodo Save per salvare l'immagine compressa in formato PNG  
            image.Save(out.png, new ImageOptions.PngOptions()
            {
            // Impostare un valore della proprietà Progressive che indichi se questo PngOptions è progressivo.
                Progressive = true,
            // IndexedColor rappresenta il tipo di colore in cui ogni pixel è un indice della tavolozza 
                ColorType = FileFormats.Png.PngColorType.IndexedColor,
            // Assegnare il valore di CompressionLevel per impostare la compressione massima 
                CompressionLevel = 9,
            // Il metodo GetCloseImagePalette otterrà la tavolozza dei colori dall'immagine raster (pallettizza l'immagine) nel caso in cui l'immagine non ne abbia una. Nel caso in cui la tavolozza esista, verrà utilizzata al posto dell'esecuzione di calcoli. 
                Palette = ColorPaletteHelper.GetCloseImagePalette((RasterImage)image, 256, PaletteMiningMethod.Histogram)
            });
        }

API di compressione delle immagini: opzioni avanzate

Nella sezione precedente, abbiamo imparato come ridurre le dimensioni del file PNG usando C#. Ora, esploriamo alcuni altri metodi e proprietà importanti di questa API di compressione delle immagini. In questa sezione, faremo una chiamata API personalizzata per creare un file PNG a livello di codice.

Puoi seguire i passaggi e lo snippet di codice menzionato di seguito:

  1. Inizializza un’istanza della classe PngImage che crea un’immagine PNG di 100x100 px.
  2. Il metodo LinearGradientBrush incapsula un oggetto Brush con un gradiente lineare.
  3. Inizializza una nuova istanza della struttura Point con le coordinate specificate.
  4. Istanziare un’istanza della classe Graphics che rappresenta la grafica in base al motore grafico utilizzato nell’assembly corrente.
  5. Riempi l’immagine con il gradiente blu-trasparente con il metodo FillRectangle.
  6. Crea un oggetto della classe PngOptions.
  7. Imposta un valore della proprietà Progressive che indichi se questo PngOptions è progressivo.
  8. È possibile impostare la risoluzione orizzontale e verticale su 96 pixel per pollice inizializzando la classe ResolutionSetting.
  9. Impostare il tipo di colore assegnando un valore alla proprietà ColorType.
  10. Assegnare un valore alla proprietà CompressionLevel per impostare il livello massimo di compressione.
  11. La proprietà FilterType imposta il tipo di filtro utilizzato durante il processo di salvataggio del file PNG.
  12. Impostare il numero di bit per canale assegnando un valore alla proprietà BitDepth.
  13. Salva in un file chiamando il metodo Save.

    // Inizializza un'istanza della classe PngImage che crea un'immagine PNG di 100x100 px. 
    using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100))
    {
        // Il metodo LinearGradientBrush incapsula un oggetto Brush con una sfumatura lineare 
        Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
                // Inizializza una nuova istanza della struttura Point con le coordinate specificate. 
                new Aspose.Imaging.Point(0, 0),
                new Aspose.Imaging.Point(pngImage.Width, pngImage.Height),
                Aspose.Imaging.Color.Blue,
                Aspose.Imaging.Color.Transparent);
        // Crea un'istanza della classe Graphics che rappresenta la grafica in base al motore grafico utilizzato nell'assembly corrente.
        Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);

        // Riempi l'immagine con il gradiente blu-trasparente con il metodo FillRectangle. 
        graphics.FillRectangle(gradientBrush, pngImage.Bounds);
        // Crea un oggetto della classe PngOptions 
        Aspose.Imaging.ImageOptions.PngOptions saveOptions = new Aspose.Imaging.ImageOptions.PngOptions();

        // imposta un valore della proprietà Progressive che indica se questo PngOptions è progressivo. 
        saveOptions.Progressive = true;

        // Impostare la risoluzione orizzontale e verticale su 96 pixel per pollice inizializzando la classe ResolutionSetting. 
        saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);

        // impostare il tipo del colore assegnando un valore alla proprietà ColorType.
        saveOptions.ColorType = Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;

        // Assegna un valore alla proprietà CompressionLevel per impostare il livello massimo di compressione. 
        saveOptions.CompressionLevel = 9;

        // La proprietà FilterType imposta il tipo di filtro utilizzato durante il processo di salvataggio del file png.
        saveOptions.FilterType = Aspose.Imaging.FileFormats.Png.PngFilterType.Adaptive;

        // impostare il numero di bit per canale assegnando un valore alla proprietà BitDepth.
        saveOptions.BitDepth = 8;

        // Salva in un file chiamando il metodo Save. 
        pngImage.Save( "output.png", saveOptions);
    }

Puoi vedere l’output nell’immagine qui sotto:

API di compressione delle immagini

Ottieni una licenza gratuita

Puoi ottenere una licenza temporanea gratuita per provare l’API senza limitazioni di valutazione.

Riassumendo

Possiamo terminare questo post sul blog qui. Ci auguriamo che tu abbia imparato a ridurre le dimensioni dei file PNG usando C# a livello di codice. Inoltre, abbiamo esaminato altri metodi avanzati di questa API di compressione delle immagini in cui abbiamo creato un file PNG ottimizzato. Tuttavia, puoi visitare questo link per ulteriori metodi e proprietà riguardanti il formato di file PNG. Soprattutto, non saltare la documentazione di questa libreria .NET per conoscere l’ecosistema. Scriveremo su altri argomenti utili nei futuri post del blog. Pertanto, rimani in contatto con conholdate.com per gli aggiornamenti.

Fai una domanda

Puoi farci sapere le tue domande o richieste sul nostro forum.

Domande frequenti

Come comprimere l’immagine PNG in C#?

Installa questa API di compressione delle immagini .NET per comprimere e manipolare i formati di file PNG. Offre metodi e proprietà per comprimere altri formati di file immagine popolari come JPEG, TIFF e altri.

Come ridurre al minimo le dimensioni del file immagine per il formato PNG?

Questo metodo ti consente di ridurre le dimensioni del file PNG usando C# a livello di codice. Inoltre, puoi configurare la chiamata API secondo le tue esigenze.

Come ridimensionare un’immagine PNG nell’esempio di codice C#?

Segui questo link per conoscere lo snippet di codice che ridimensiona un’immagine PNG a livello di codice. Questa API .NET è potente e offre un’ampia gamma di metodi e proprietà.

Guarda anche