Уменьшите размер файла PNG с помощью C #

Уменьшите размер файла PNG с помощью C #

Системное хранилище является критически важным вопросом в этот современный век технологий. Объем данных увеличивается с каждым днем, и визуальное представление файлов данных приобрело большую популярность. Однако существует множество способов сжатия форматов файлов изображений, но качество изображения не должно ухудшаться. Поэтому мы будем использовать этот API сжатия изображений .NET для сжатия изображений PNG. В этом сообщении блога мы узнаем, как программно уменьшить размер файла PNG с помощью C#.

В этой статье мы рассмотрим следующие моменты:

Установка API сжатия изображений

Эта библиотека предлагает широкий спектр методов и свойств для управления и обработки различных форматов файлов изображений, таких как JPEG, TIFF и других. Есть два способа установить этот API в ваш проект .NET.

Поэтому вы можете либо загрузить файлы DLL, либо выполнить следующую команду в диспетчере пакетов NuGet.

Install-Package Aspose.Imaging

Как уменьшить размер файла PNG с помощью C#

Вы можете увидеть огромный набор методов и свойств здесь для сжатия форматов файлов изображений. Поэтому мы напишем шаги и фрагмент кода для программного сжатия файла PNG.

Выполните следующие действия:

  1. Загрузите исходное изображение PNG, вызвав метод Load.
  2. Вызовите метод Save, чтобы сохранить сжатое изображение в формате PNG.
  3. Установите значение свойства Progressive, которое указывает, является ли этот PngOptions прогрессивным.
  4. IndexedColor представляет тип цвета, где каждый пиксель является индексом палитры.
  5. Назначьте значение CompressionLevel, чтобы установить максимальное сжатие.
  6. Метод GetCloseImagePalette получит цветовую палитру из растрового изображения (палетизирует изображение), если у изображения ее нет. Если палитра существует, она будет использоваться вместо выполнения вычислений.
// Загрузите исходное изображение PNG, вызвав метод Load. 
        using (Image image = Image.Load("image.png"))
        {
        // Вызовите метод Save, чтобы сохранить сжатое изображение в формате PNG.  
            image.Save(out.png, new ImageOptions.PngOptions()
            {
            // Задайте значение свойства Progressive, указывающее, является ли этот PngOptions прогрессивным.
                Progressive = true,
            // IndexedColor представляет тип цвета, где каждый пиксель является индексом палитры. 
                ColorType = FileFormats.Png.PngColorType.IndexedColor,
            // Присвойте значение CompressionLevel, чтобы установить максимальное сжатие 
                CompressionLevel = 9,
            // Метод GetCloseImagePalette получит цветовую палитру из растрового изображения (палетизирует изображение), если на изображении его нет. Если палитра существует, она будет использоваться вместо выполнения вычислений. 
                Palette = ColorPaletteHelper.GetCloseImagePalette((RasterImage)image, 256, PaletteMiningMethod.Histogram)
            });
        }

API сжатия изображений — дополнительные параметры

В предыдущем разделе мы узнали, как уменьшить размер файла PNG с помощью C#. Теперь давайте рассмотрим некоторые другие известные методы и свойства этого API сжатия изображений. В этом разделе мы создадим собственный вызов API для программного создания файла PNG.

Вы можете выполнить шаги и фрагмент кода, указанные ниже:

  1. Инициализируйте экземпляр класса PngImage, который создает изображение PNG размером 100x100 пикселей.
  2. Метод LinearGradientBrush инкапсулирует кисть с линейным градиентом.
  3. Инициализирует новый экземпляр структуры Point с указанными координатами.
  4. Создайте экземпляр класса Graphics, который представляет графику в соответствии с графическим движком, используемым в текущей сборке.
  5. Залейте изображение голубо-прозрачным градиентом с помощью метода FillRectangle.
  6. Создайте объект класса PngOptions.
  7. Установите значение свойства Progressive, которое указывает, является ли этот PngOptions прогрессивным.
  8. Вы можете установить разрешение по горизонтали и вертикали равным 96 пикселей на дюйм, инициализировав класс ResolutionSetting.
  9. Установите тип цвета, присвоив значение свойству ColorType.
  10. Присвойте значение свойству CompressionLevel, чтобы установить максимальный уровень сжатия.
  11. Свойство FilterType задает тип фильтра, который будет использоваться в процессе сохранения PNG-файла.
  12. Установите количество бит на канал, присвоив значение свойству BitDepth.
  13. Сохраните в файл, вызвав метод Save.

    // Инициализируйте экземпляр класса PngImage, который создает изображение PNG размером 100x100 пикселей. 
    using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100))
    {
        // Метод LinearGradientBrush инкапсулирует кисть с линейным градиентом. 
        Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
                // Инициализирует новый экземпляр структуры Point с указанными координатами. 
                new Aspose.Imaging.Point(0, 0),
                new Aspose.Imaging.Point(pngImage.Width, pngImage.Height),
                Aspose.Imaging.Color.Blue,
                Aspose.Imaging.Color.Transparent);
        // Создайте экземпляр класса Graphics, который представляет графику в соответствии с графическим движком, используемым в текущей сборке.
        Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);

        // Залейте изображение сине-прозрачным градиентом с помощью метода FillRectangle. 
        graphics.FillRectangle(gradientBrush, pngImage.Bounds);
        // Создайте объект класса PngOptions 
        Aspose.Imaging.ImageOptions.PngOptions saveOptions = new Aspose.Imaging.ImageOptions.PngOptions();

        // задает значение свойства Progressive, указывающее, является ли этот PngOptions прогрессивным. 
        saveOptions.Progressive = true;

        // Установите разрешение по горизонтали и вертикали на 96 пикселей на дюйм, инициализировав класс ResolutionSetting. 
        saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);

        // установите тип цвета, присвоив значение свойству ColorType.
        saveOptions.ColorType = Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;

        // Присвойте значение свойству CompressionLevel, чтобы установить максимальный уровень сжатия. 
        saveOptions.CompressionLevel = 9;

        // Свойство FilterType задает тип фильтра, используемого в процессе сохранения файла png.
        saveOptions.FilterType = Aspose.Imaging.FileFormats.Png.PngFilterType.Adaptive;

        // установите количество битов на канал, назначив значение свойству BitDepth.
        saveOptions.BitDepth = 8;

        // Сохраните в файл, вызвав метод Save. 
        pngImage.Save( "output.png", saveOptions);
    }

Вы можете увидеть результат на изображении ниже:

API сжатия изображений

Получить бесплатную лицензию

Вы можете получить бесплатную временную лицензию, чтобы опробовать API без ограничений пробной версии.

Подведение итогов

Мы можем закончить этот пост в блоге здесь. Мы надеемся, что вы научились программно уменьшать размер PNG-файла с помощью C#. Кроме того, мы рассмотрели некоторые другие расширенные методы этого API сжатия изображений, создав оптимизированный файл PNG. Тем не менее, вы можете посетить эту ссылка для получения дополнительных методов и свойств, касающихся формата файла PNG. Прежде всего, не пропускайте документацию этой библиотеки .NET, чтобы узнать об экосистеме. Мы напишем о других полезных темах в будущих сообщениях в блоге. Поэтому следите за обновлениями на conholdate.com.

Задайте вопрос

Вы можете сообщить нам о своих вопросах или запросах на нашем форуме.

Часто задаваемые вопросы

Как сжать изображение PNG в С#?

Установите этот API для сжатия изображений .NET, чтобы сжимать файлы в формате PNG и управлять ими. Он предлагает методы и свойства для сжатия других популярных форматов файлов изображений, таких как JPEG, TIFF и другие.

Как минимизировать размер файла изображения для формата PNG?

Этот метод позволяет программно уменьшить размер файла PNG с помощью C#. Кроме того, вы можете настроить вызов API в соответствии с вашими требованиями.

Как изменить размер изображения PNG в примере кода С#?

Перейдите по этой ссылке, чтобы узнать о фрагменте кода, который программно изменяет размер изображения PNG. Этот .NET API является мощным и предлагает широкий спектр методов и свойств.

Смотрите также