Обработка изображений PNG

Указание прозрачности изображений PNG

Одним из преимуществ сохранения изображений в формате PNG является возможность использования прозрачного фона. Aspose.PSD для .NET предоставляет функцию указания прозрачности для изображений PNG и растровых изображений, как показано в следующем разделе. Aspose.PSD для .NET API может использоваться для установки любого цвета в качестве прозрачного при создании новых изображений PNG или конвертации существующих изображений в формат PNG. Для этого Aspose.PSD для .NET API предоставляет свойства TransparentColor и перечисление PngColorType, которые могут быть установлены для указания любого цвета, который должен быть отображен прозрачным на изображении PNG. Ниже приведен фрагмент кода, демонстрирующий, как конвертировать существующее изображение PSD в изображение PNG, указав желаемый цвет как прозрачный.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "sample.psd"))
{
// specify the PNG image transparency options and save to file.
psdImage.TransparentColor = Color.White;
psdImage.HasTransparentColor = true;
PngOptions opt = new PngOptions();
psdImage.Save(dataDir + "Specify_Transparency_result.png", new PngOptions());
}

Установка разрешения для изображений PNG

Aspose.PSD для .NET предоставляет класс ResolutionSetting, который может использоваться для установки разрешения для всех форматов изображений, включая PNG. В этой статье демонстрируется использование Aspose.PSD для .NET API для установки параметров горизонтального и вертикального разрешения для изображения в формате PNG. Ниже приведен фрагмент кода, который загружает существующее изображение PSD и конвертирует его в формат PNG, изменяя также разрешение.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "sample.psd"))
{
// Create an instance of PngOptions, Set the horizontal & vertical resolutions and Save the result on disc
PngOptions options = new PngOptions();
options.ResolutionSettings = new ResolutionSetting(72, 96);
psdImage.Save(dataDir + "SettingResolution_output.png", options);
}

Сжатие файлов PNG

Portable Network Graphic (PNG) - это формат сжатия без потерь для передачи битовой карты по сетям. Когда вы сохраняете изображение в формате PNG в программе, вас могут попросить выбрать уровень сжатия в диапазоне от 0 до максимального уровня. Установка этого значения фактически сжимает размер файла и не ухудшает качество изображения. В этой статье описывается, как Aspose.PSD APIs позволяют управлять размером файла PNG. С помощью Aspose.PSD APIs можно устанавливать уровни сжатия для формата файла PNG с использованием класса PngOptions, который имеет свойство int CompressionLevel. Это свойство принимает значение от 0 до 9, где 9 - максимальное сжатие. Ниже приведен фрагмент кода, демонстрирующий, как установить уровни сжатия с использованием Aspose.PSD для .NET API.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "sample.psd"))
{
// Loop over possible CompressionLevel range
for (int i = 0; i <= 9; i++)
{
// Create an instance of PngOptions for each resultant PNG, Set CompressionLevel and Save result on disk
PngOptions options = new PngOptions();
options.CompressionLevel = i;
psdImage.Save(dataDir + i + "_out.png", options);
}
}

Указание битовой глубины для изображений PNG

Битовая глубина в обработке изображений - это количество бит, используемых для указания цвета одного пикселя в битовом изображении. Как и все другие форматы битовых изображений, битовая глубина PNG также представлена в битах, таких как 1-бит (2 цвета), 2-бит (4 цвета), 4-бит (16 цветов) и 8-бит (256 цветов). Aspose.PSD для .NET API может использоваться для установки битовой глубины для изображений PNG с помощью свойства BitDepth, предоставленного классом PngOptions. В данный момент свойство BitDepth может быть установлено на 1, 2, 4 или 8 бит для оттенков серого и индексированных цветов. Для всех остальных типов цветов поддерживается только 8 бит. Ниже приведен фрагмент кода, демонстрирующий, как установить битовую глубину для изображения PNG.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "sample.psd"))
{
// Create an instance of PngOptions, Set the desired ColorType, BitDepth according to the specified ColorType and save image
PngOptions options = new PngOptions();
options.ColorType = PngColorType.Grayscale;
options.BitDepth = 1;
psdImage.Save(dataDir + "SpecifyBitDepth_out.png", options);
}

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

Битовая глубина в обработке изображений - это количество бит, используемых для указания цвета одного пикселя в битовом изображении. Как и все другие форматы битовых изображений, битовая глубина PNG также представлена в битах, таких как 1-бит (2 цвета), 2-бит (4 цвета), 4-бит (16 цветов) и 8-бит (256 цветов). Aspose.PSD для .NET API может использоваться для установки битовой глубины для изображений PNG с использованием свойства BitDepth, предоставленного классом PngOptions. В данный момент свойство BitDepth может быть установлено на 1, 2, 4 или 8 бит для оттенков серого и индексированных цветов. Для всех остальных типов цветов поддерживается только 8 бит. Ниже приведен фрагмент кода, демонстрирующий, как установить битовую глубину для изображения PNG.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "sample.psd"))
{
// Create an instance of PngOptions, Set the PNG filter method and Save changes to the disc
PngOptions options = new PngOptions();
options.FilterType = PngFilterType.Paeth;
psdImage.Save(dataDir + "ApplyFilterMethod_out.png", options);
}

Изменение цвета фона у прозрачного изображения PNG

Изображения в формате PNG могут иметь прозрачный фон. Aspose.PSD для .NET предоставляет возможность изменить цвет фона изображения PNG с прозрачным фоном. Aspose.PSD для .NET API может использоваться для установки/изменения цвета прозрачного изображения PNG. Ниже приведен фрагмент кода, демонстрирующий, как установить/изменить цвет фона прозрачного изображения PNG.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "sample.psd"))
{
int[] pixels = psdImage.LoadArgb32Pixels(psdImage.Bounds);
// Iterate through the pixel array and Check the pixel information
//that if it is a transparent color pixel and Change the pixel color to white
int transparent = psdImage.TransparentColor.ToArgb();
int replacementColor = Color.Yellow.ToArgb();
for (int i = 0; i < pixels.Length; i++)
{
if (pixels[i] == transparent)
{
pixels[i] = replacementColor;
}
}
// Replace the pixel array into the image.
psdImage.SaveArgb32Pixels(psdImage.Bounds, pixels);
psdImage.Save(dataDir + "ChangeBackground_out.png", new PngOptions());
}