Zmniejsz rozmiar pliku PNG za pomocą C#

Zmniejsz rozmiar pliku PNG za pomocą C#

Pamięć systemowa to temat krytyczny we współczesnej epoce technologii. Ilość danych rośnie każdego dnia, a wizualna reprezentacja plików danych zyskała dużą popularność. Istnieje jednak wiele sposobów kompresji plików obrazów w różnych formatach, ale nie należy pogarszać jakości obrazu. Dlatego użyjemy tego interfejsu API kompresji obrazu .NET do kompresji obrazów PNG. W tym poście na blogu dowiemy się, jak programowo zmniejszyć rozmiar pliku PNG za pomocą języka C#.

W tym artykule omówimy następujące punkty:

Kompresja obrazu PNG — instalacja interfejsu API języka C#

Ta biblioteka oferuje szeroką gamę metod i właściwości do manipulowania i przetwarzania różnych formatów plików obrazów, takich jak JPEG, TIFF i innych. Istnieją dwa sposoby zainstalowania tego interfejsu API w projekcie .NET.

Dlatego możesz pobrać pliki DLL lub uruchomić następujące polecenie w menedżerze pakietów NuGet.

Install-Package Aspose.Imaging

Jak zmniejszyć rozmiar pliku PNG za pomocą C#

Możesz zobaczyć ogromny stos metod i właściwości tutaj do kompresji formatów plików graficznych. Dlatego napiszemy kroki i fragment kodu, aby programowo skompresować plik PNG.

Wykonaj następujące kroki:

  1. Załaduj źródłowy obraz PNG, wywołując metodę Load.
  2. Wywołaj metodę Save, aby zapisać skompresowany obraz w formacie PNG.
  3. Ustaw wartość właściwości Progressive, która wskazuje, czy ta opcja PngOptions jest progresywna.
  4. IndexedColor reprezentuje typ koloru, w którym każdy piksel jest indeksem palety.
  5. Przypisz wartość CompressionLevel, aby ustawić maksymalną kompresję.
  6. Metoda GetCloseImagePalette pobierze paletę kolorów z obrazu rastrowego (paletyzuje obraz) w przypadku, gdy obraz jej nie posiada. Jeżeli istnieje paleta, zostanie ona użyta zamiast wykonywania obliczeń.

Poniższy fragment kodu pokazuje, jak zmniejszyć rozmiar pliku PNG w języku C#:

// Załaduj źródłowy obraz PNG, wywołując metodę Load 
        using (Image image = Image.Load("image.png"))
        {
        // Wywołaj metodę Save, aby zapisać skompresowany obraz w formacie PNG  
            image.Save(out.png, new ImageOptions.PngOptions()
            {
            // Ustaw wartość właściwości Progressive, która wskazuje, czy ta opcja PngOptions jest progresywna.
                Progressive = true,
            // IndexedColor reprezentuje typ koloru, w którym każdy piksel jest indeksem palety 
                ColorType = FileFormats.Png.PngColorType.IndexedColor,
            // Przypisz wartość CompressionLevel, aby ustawić maksymalną kompresję 
                CompressionLevel = 9,
            // Metoda GetCloseImagePalette pobierze paletę kolorów z obrazu rastrowego (paletyzuje obraz) w przypadku, gdy obraz jej nie posiada. Jeśli paleta istnieje, będzie ona używana zamiast wykonywania obliczeń. 
                Palette = ColorPaletteHelper.GetCloseImagePalette((RasterImage)image, 256, PaletteMiningMethod.Histogram)
            });
        }

Kompresja obrazu PNG — opcje zaawansowane

W poprzedniej sekcji dowiedzieliśmy się, jak zmniejszyć rozmiar pliku PNG za pomocą języka C#. Przyjrzyjmy się teraz innym ważnym metodom i właściwościom tego interfejsu API kompresji obrazu. W tej sekcji wykonamy niestandardowe wywołanie API, aby programowo utworzyć plik PNG.

Możesz wykonać kroki i fragment kodu wymieniony poniżej:

  1. Zainicjuj instancję klasy PngImage, która tworzy obraz PNG o wymiarach 100x100 pikseli.

  2. Metoda LinearGradientBrush hermetyzuje Brush z gradientem liniowym.

  3. Inicjuje nową instancję struktury Point z określonymi współrzędnymi.

  4. Utwórz instancję klasy Graphics, która reprezentuje grafikę zgodnie z silnikiem graficznym używanym w bieżącym zestawie.

  5. Wypełnij obraz niebiesko-przezroczystym gradientem za pomocą metody FillRectangle.

  6. Utwórz obiekt klasy PngOptions.

  7. Ustaw wartość właściwości Progressive, która wskazuje, czy ta opcja PngOptions jest progresywna.

  8. Rozdzielczość poziomą i pionową można ustawić na 96 pikseli na cal, inicjując klasę ResolutionSetting.

  9. Ustaw typ koloru, przypisując wartość właściwości ColorType.

  10. Przypisz wartość właściwości CompressionLevel, aby ustawić maksymalny poziom kompresji.

  11. Właściwość FilterType ustawia typ filtra używanego podczas procesu zapisywania pliku PNG.

  12. Ustaw liczbę bitów na kanał, przypisując wartość właściwości BitDepth.

  13. Zapisz do pliku wywołując metodę Save.

Poniższy przykładowy kod ilustruje sposób kompresji obrazu PNG w języku C#:


    // Zainicjuj instancję klasy PngImage, która tworzy obraz PNG o wymiarach 100x100 pikseli. 
    using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100))
    {
        // Metoda LinearGradientBrush hermetyzuje Brush z gradientem liniowym 
        Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
                // Inicjuje nowe wystąpienie struktury Point z określonymi współrzędnymi. 
                new Aspose.Imaging.Point(0, 0),
                new Aspose.Imaging.Point(pngImage.Width, pngImage.Height),
                Aspose.Imaging.Color.Blue,
                Aspose.Imaging.Color.Transparent);
        // Utwórz instancję klasy Graphics, która reprezentuje grafikę zgodnie z silnikiem graficznym używanym w bieżącym złożeniu.
        Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);

        // Wypełnij obraz niebiesko-przezroczystym gradientem metodą FillRectangle. 
        graphics.FillRectangle(gradientBrush, pngImage.Bounds);
        // Utwórz obiekt klasy PngOptions 
        Aspose.Imaging.ImageOptions.PngOptions saveOptions = new Aspose.Imaging.ImageOptions.PngOptions();

        // ustawia wartość właściwości Progressive, która wskazuje, czy ta opcja PngOptions jest progresywna. 
        saveOptions.Progressive = true;

        // Ustaw rozdzielczość poziomą i pionową na 96 pikseli na cal, inicjując klasę DefinitionSetting. 
        saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);

        // ustaw typ koloru, przypisując wartość właściwości ColorType.
        saveOptions.ColorType = Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;

        // Przypisz wartość do właściwości CompressionLevel, aby ustawić maksymalny poziom kompresji. 
        saveOptions.CompressionLevel = 9;

        // Właściwość FilterType ustawia typ filtra używanego podczas procesu zapisywania pliku PNG.
        saveOptions.FilterType = Aspose.Imaging.FileFormats.Png.PngFilterType.Adaptive;

        // ustaw liczbę bitów na kanał, przypisując wartość do właściwości BitDepth.
        saveOptions.BitDepth = 8;

        // Zapisz do pliku, wywołując metodę Save. 
        pngImage.Save( "output.png", saveOptions);
    }

Wynik możesz zobaczyć na obrazku poniżej:

API kompresji obrazu

Zdobądź bezpłatną licencję

Możesz uzyskać bezpłatną licencję tymczasową, aby wypróbować interfejs API bez ograniczeń ewaluacyjnych.

Podsumowując

Na tym możemy zakończyć ten wpis na blogu. Mamy nadzieję, że nauczyłeś się programowo zmniejszać rozmiar pliku PNG za pomocą języka C#. Ponadto sprawdziliśmy kilka innych zaawansowanych metod interfejsu API kompresji obrazu PNG, w ramach których utworzyliśmy zoptymalizowany plik PNG. Możesz jednak odwiedzić ten link, aby uzyskać dalsze metody i właściwości dotyczące formatu pliku PNG. Przede wszystkim nie pomijaj dokumentacji tej biblioteki .NET, aby poznać ekosystem. O innych przydatnych tematach będziemy pisać w przyszłych wpisach na blogu. Dlatego pozostań w kontakcie z conholdate.com, aby uzyskać aktualizacje.

Zadać pytanie

Możesz dać nam znać o swoich pytaniach lub wątpliwościach na naszym forum.

Często zadawane pytania

Jak skompresować obraz PNG w C#?

Zainstaluj ten interfejs API kompresji obrazu .NET, aby kompresować formaty plików PNG i manipulować nimi. Oferuje metody i właściwości do kompresji innych popularnych formatów plików graficznych, takich jak JPEG, TIFF i inne.

Jak zminimalizować rozmiar pliku obrazu dla formatu PNG?

Ta metoda pozwala programowo zmniejszyć rozmiar pliku PNG przy użyciu języka C#. Co więcej, możesz skonfigurować wywołanie API zgodnie ze swoimi wymaganiami.

Jak zmienić rozmiar obrazu PNG w przykładzie kodu C#?

Kliknij ten [link], aby dowiedzieć się więcej o fragmencie kodu, który programowo zmienia rozmiar obrazu PNG. Ten interfejs API .NET jest potężny i oferuje szeroką gamę metod i właściwości.

Zobacz też