PngOptions
Inheritance: java.lang.Object, com.aspose.imaging.DisposableObject, com.aspose.imaging.ImageOptionsBase
public class PngOptions extends ImageOptionsBase
Создавайте высококачественные растровые изображения Portable Network Graphics (PNG) без усилий с помощью нашего API, предлагающего настраиваемые параметры уровней сжатия, битов на пиксель, глубины и альфа‑бит. Бесшовно обрабатывайте контейнеры метаданных XMP, обеспечивая всестороннее управление метаданными изображений, и позволяя вам точно настраивать PNG‑изображения в соответствии с вашими требованиями.
Конструкторы
| Конструктор | Описание |
|---|---|
| PngOptions() | Инициализирует новый экземпляр класса PngOptions. |
| PngOptions(PngOptions pngOptions) | Инициализирует новый экземпляр класса PngOptions. |
Поля
| Поле | Описание |
|---|---|
| DEFAULT_COMPRESSION_LEVEL | Уровень сжатия по умолчанию. |
Методы
| Метод | Описание |
|---|---|
| getColorType() | Получает тип цвета. |
| setColorType(int value) | Устанавливает тип цвета. |
| getProgressive() | Возвращает значение, указывающее, является ли PngImage прогрессивным. |
| setProgressive(boolean value) | Устанавливает значение, указывающее, является ли PngImage прогрессивным. |
| getFilterType() | Возвращает тип фильтра, используемый при сохранении PNG‑файла. |
| setFilterType(int value) | Устанавливает тип фильтра, используемый при сохранении PNG‑файла. |
| getCompressionLevel() | Возвращает уровень сжатия PngImage. |
| setCompressionLevel(int value) | Устанавливает уровень сжатия PngImage. |
| getPngCompressionLevel() | Возвращает уровень сжатия PngImage. |
| setPngCompressionLevel(int value) | Устанавливает уровень сжатия PngImage. |
| getBitDepth() | Возвращает значения глубины цвета в диапазоне 1, 2, 4, 8, 16. |
| setBitDepth(byte value) | Устанавливает значения глубины цвета в диапазоне 1, 2, 4, 8, 16. |
Example: This example demonstrates the use of different classes from SaveOptions Namespace for export purposes.
В этом примере демонстрируется использование различных классов из пространства имен SaveOptions для экспорта. Изображение типа Gif загружается в экземпляр класса Image, а затем экспортируется в несколько форматов.
String dir = "c:\\temp\\";
//Загрузите существующее изображение (типа Gif) в экземпляр класса Image.
com.aspose.imaging.Image image = com.aspose.imaging.Image.load(dir + "sample.gif");
try {
//Экспорт в формат BMP с использованием параметров по умолчанию.
image.save(dir + "output.bmp", new com.aspose.imaging.imageoptions.BmpOptions());
//Экспорт в формат JPEG с использованием параметров по умолчанию.
image.save(dir + "output.jpeg", new com.aspose.imaging.imageoptions.JpegOptions());
//Экспорт в формат PNG с использованием параметров по умолчанию.
image.save(dir + "output.png", new com.aspose.imaging.imageoptions.PngOptions());
//Экспорт в формат TIFF с использованием параметров по умолчанию.
image.save(dir + "output.tif", new com.aspose.imaging.imageoptions.TiffOptions(com.aspose.imaging.fileformats.tiff.enums.TiffExpectedFormat.Default));
} finally {
image.dispose();
}
Example: The following example shows how to convert a multipage vector image to PNG format in general way without referencing to a particular image type.
String dir = "C:\\aspose.imaging\\net\\misc\\ImagingReleaseQATester\\Tests\\testdata\\2548";
String inputFilePath = (dir + "Multipage.cdr");
String outputFilePath = (dir + "Multipage.cdr.png");
com.aspose.imaging.ImageOptionsBase exportOptions = new com.aspose.imaging.imageoptions.PngOptions();
try (com.aspose.imaging.Image image = com.aspose.imaging.Image.load(inputFilePath))
{
exportOptions.setMultiPageOptions(null);
// Экспортировать только первые две страницы. На самом деле будет растеризована только одна страница, поскольку PNG не поддерживает многостраничный формат.
com.aspose.imaging.IMultipageImage multipageImage = (image instanceof com.aspose.imaging.IMultipageImage) ? (com.aspose.imaging.IMultipageImage) image : null;
if (multipageImage != null && (multipageImage.getPages() != null && multipageImage.getPageCount() > 2))
{
exportOptions.setMultiPageOptions(new com.aspose.imaging.imageoptions.MultiPageOptions(new com.aspose.imaging.IntRange(0, 2)));
}
if (image instanceof com.aspose.imaging.VectorImage)
{
com.aspose.imaging.imageoptions.VectorRasterizationOptions defaultOptions = (com.aspose.imaging.imageoptions.VectorRasterizationOptions) image.getDefaultOptions(new Object[]{Color.getWhite(), image.getWidth(), image.getHeight()});
exportOptions.setVectorRasterizationOptions(defaultOptions);
defaultOptions.setTextRenderingHint(com.aspose.imaging.TextRenderingHint.SingleBitPerPixel);
defaultOptions.setSmoothingMode(com.aspose.imaging.SmoothingMode.None);
}
image.save(outputFilePath, exportOptions);
}
PngOptions()
public PngOptions()
Инициализирует новый экземпляр класса PngOptions.
PngOptions(PngOptions pngOptions)
public PngOptions(PngOptions pngOptions)
Инициализирует новый экземпляр класса PngOptions.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| pngOptions | PngOptions | Параметры PNG. |
DEFAULT_COMPRESSION_LEVEL
public static final int DEFAULT_COMPRESSION_LEVEL
Уровень сжатия по умолчанию.
getColorType()
public final int getColorType()
Получает тип цвета.
Значение: тип цвета.
Returns: int — тип цвета.
setColorType(int value)
public final void setColorType(int value)
Устанавливает тип цвета.
Значение: тип цвета.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| value | int | тип цвета. |
Example: The following example shows how to compress a PNG image, using indexed color with best fit palette
// Загружает PNG‑изображение
String sourceFilePath = "OriginalRings.png";
String outputFilePath = "OriginalRingsOutput.png";
try (com.aspose.imaging.Image image = com.aspose.imaging.Image.load(sourceFilePath))
{
com.aspose.imaging.imageoptions.PngOptions options = new com.aspose.imaging.imageoptions.PngOptions();
options.setProgressive(true);
// Использовать индексированный тип цвета
options.setColorType(com.aspose.imaging.fileformats.png.PngColorType.IndexedColor);
// Использовать максимальное сжатие
options.setCompressionLevel(9);
// Получить ближайшую 8‑битную палитру цветов, покрывающую как можно больше пикселей, так чтобы палитровое изображение
// было почти визуально неотличимо от непалитрового.
options.setPalette(com.aspose.imaging.ColorPaletteHelper.getCloseImagePalette((com.aspose.imaging.RasterImage)image,
256, Aspose.Imaging.PaletteMiningMethod.Histogram));
image.save(outputFilePath, options);
}
// Размер выходного файла должен быть значительно уменьшен
Example: The following example shows how to save an image to PNG format using various options.
String dir = "c:\\temp\\";
// Создайте PNG‑изображение размером 100×100 пикселей.
// Вы также можете загрузить изображение любого поддерживаемого формата из файла или потока.
com.aspose.imaging.fileformats.png.PngImage pngImage = new com.aspose.imaging.fileformats.png.PngImage(100, 100);
try {
com.aspose.imaging.brushes.LinearGradientBrush gradientBrush = new com.aspose.imaging.brushes.LinearGradientBrush(
new com.aspose.imaging.Point(0, 0),
new com.aspose.imaging.Point(pngImage.getWidth(), pngImage.getHeight()),
com.aspose.imaging.Color.getBlue(),
com.aspose.imaging.Color.getTransparent());
com.aspose.imaging.Graphics graphics = new com.aspose.imaging.Graphics(pngImage);
// Заполните изображение синим полупрозрачным градиентом.
graphics.fillRectangle(gradientBrush, pngImage.getBounds());
com.aspose.imaging.imageoptions.PngOptions saveOptions = new com.aspose.imaging.imageoptions.PngOptions();
// Используйте прогрессивную загрузку.
saveOptions.setProgressive(true);
// Установите горизонтальное и вертикальное разрешение в 96 пикселей на дюйм.
saveOptions.setResolutionSettings(new com.aspose.imaging.ResolutionSetting(96.0, 96.0));
// Каждый пиксель представляет собой тройку (красный, зелёный, синий), за которой следует альфа‑канал.
saveOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
// Установите максимальный уровень сжатия.
saveOptions.setCompressionLevel(9);
// Это наилучшее сжатие, но с самой медленной скоростью выполнения.
// Адаптивная фильтрация означает, что процесс сохранения выберет наиболее подходящий фильтр для каждой строки данных.
saveOptions.setFilterType(com.aspose.imaging.fileformats.png.PngFilterType.Adaptive);
// Количество битов на канал.
saveOptions.setBitDepth((byte) 8);
// Сохранить в файл.
pngImage.save(dir + "output.png", saveOptions);
} finally {
pngImage.dispose();
}
getProgressive()
public final boolean getProgressive()
Возвращает значение, указывающее, является ли PngImage прогрессивным.
Значение: если прогрессивный; иначе,.
Returns: boolean — значение, указывающее, является ли PngImage прогрессивным.
setProgressive(boolean value)
public final void setProgressive(boolean value)
Устанавливает значение, указывающее, является ли PngImage прогрессивным.
Значение: если прогрессивный; иначе,.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| value | boolean | значение, указывающее, является ли PngImage прогрессивным. |
Example: The following example shows how to compress a PNG image, using indexed color with best fit palette
// Загружает PNG‑изображение
String sourceFilePath = "OriginalRings.png";
String outputFilePath = "OriginalRingsOutput.png";
try (com.aspose.imaging.Image image = com.aspose.imaging.Image.load(sourceFilePath))
{
com.aspose.imaging.imageoptions.PngOptions options = new com.aspose.imaging.imageoptions.PngOptions();
options.setProgressive(true);
// Использовать индексированный тип цвета
options.setColorType(com.aspose.imaging.fileformats.png.PngColorType.IndexedColor);
// Использовать максимальное сжатие
options.setCompressionLevel(9);
// Получить ближайшую 8‑битную палитру цветов, покрывающую как можно больше пикселей, так чтобы палитровое изображение
// было почти визуально неотличимо от непалитрового.
options.setPalette(com.aspose.imaging.ColorPaletteHelper.getCloseImagePalette((com.aspose.imaging.RasterImage)image,
256, Aspose.Imaging.PaletteMiningMethod.Histogram));
image.save(outputFilePath, options);
}
// Размер выходного файла должен быть значительно уменьшен
Example: This example shows how to create a PNG image with the specified options, fill it with a linear gradient colors and save it to a file.
String dir = "c:\\temp\\";
com.aspose.imaging.imageoptions.PngOptions createOptions = new com.aspose.imaging.imageoptions.PngOptions();
// Количество битов на цветовой канал
createOptions.setBitDepth((byte) 8);
// Каждый пиксель представляет собой тройку (красный, зелёный, синий), за которой следует альфа‑компонент.
createOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
// Максимальный уровень сжатия.
createOptions.setCompressionLevel(9);
// Использование фильтров позволяет более эффективно сжимать непрерывные тональные изображения.
createOptions.setFilterType(com.aspose.imaging.fileformats.png.PngFilterType.Sub);
// Использовать прогрессивную загрузку
createOptions.setProgressive(true);
// Создать PNG‑изображение с пользовательскими параметрами.
com.aspose.imaging.fileformats.png.PngImage pngImage = new com.aspose.imaging.fileformats.png.PngImage(createOptions, 100, 100);
try {
com.aspose.imaging.brushes.LinearGradientBrush gradientBrush = new com.aspose.imaging.brushes.LinearGradientBrush(
new com.aspose.imaging.Point(0, 0),
new com.aspose.imaging.Point(pngImage.getWidth(), pngImage.getHeight()),
com.aspose.imaging.Color.getBlue(),
com.aspose.imaging.Color.getTransparent());
com.aspose.imaging.Graphics graphics = new com.aspose.imaging.Graphics(pngImage);
// Заполнить изображение полупрозрачным градиентом.
graphics.fillRectangle(gradientBrush, pngImage.getBounds());
// Сохранить в файл.
pngImage.save(dir + "output.explicitoptions.png");
} finally {
pngImage.dispose();
}
getFilterType()
public final int getFilterType()
Возвращает тип фильтра, используемый при сохранении PNG‑файла.
Returns: int — тип фильтра, используемый при сохранении PNG‑файла.
setFilterType(int value)
public final void setFilterType(int value)
Устанавливает тип фильтра, используемый при сохранении PNG‑файла.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| value | int | тип фильтра, используемый при сохранении PNG‑файла. |
Example: The following example shows how different filter types affect the size of the output PNG image.
// Вспомогательный класс
class Utils {
public String getPngFilterTypeString(int filterType) {
switch (filterType) {
case com.aspose.imaging.fileformats.png.PngFilterType.None:
return "None";
case com.aspose.imaging.fileformats.png.PngFilterType.Up:
return "Up";
case com.aspose.imaging.fileformats.png.PngFilterType.Sub:
return "Sub";
case com.aspose.imaging.fileformats.png.PngFilterType.Paeth:
return "Paeth";
case com.aspose.imaging.fileformats.png.PngFilterType.Avg:
return "Avg";
case com.aspose.imaging.fileformats.png.PngFilterType.Adaptive:
return "Adaptive";
default:
throw new IllegalArgumentException("filterType");
}
}
}
// Вот основной пример
Utils utils = new Utils();
int[] filterTypes = new int[]
{
com.aspose.imaging.fileformats.png.PngFilterType.None,
com.aspose.imaging.fileformats.png.PngFilterType.Up,
com.aspose.imaging.fileformats.png.PngFilterType.Sub,
com.aspose.imaging.fileformats.png.PngFilterType.Paeth,
com.aspose.imaging.fileformats.png.PngFilterType.Avg,
com.aspose.imaging.fileformats.png.PngFilterType.Adaptive,
};
for (int filterType : filterTypes) {
com.aspose.imaging.imageoptions.PngOptions options = new com.aspose.imaging.imageoptions.PngOptions();
com.aspose.imaging.Image image = com.aspose.imaging.Image.load("c:\\temp\\sample.png");
try {
// Установить тип фильтра
options.setFilterType(filterType);
java.io.ByteArrayOutputStream stream = new java.io.ByteArrayOutputStream();
try {
image.save(stream, options);
System.out.printf("The filter type is %s, the output image size is %s bytes.", utils.getPngFilterTypeString(filterType), stream.size());
} finally {
stream.close();
}
} finally {
image.dispose();
}
}
//Вывод может выглядеть так:
//Тип фильтра — None, размер выходного изображения — 116845 байт.
//Тип фильтра — Up, размер выходного изображения — 86360 байт.
//Тип фильтра — Sub, размер выходного изображения — 94907 байт.
//Тип фильтра — Paeth, размер выходного изображения — 86403 байт.
//Тип фильтра — Avg, размер выходного изображения — 89956 байт.
//Тип фильтра — Adaptive, размер выходного изображения — 97248 байт.
getCompressionLevel()
public final int getCompressionLevel()
Возвращает уровень сжатия PngImage.
Returns: int — уровень сжатия PngImage.
setCompressionLevel(int value)
public final void setCompressionLevel(int value)
Устанавливает уровень сжатия PngImage.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| value | int | уровень сжатия PngImage. |
Example: The following example shows how to compress a PNG image, using indexed color with best fit palette
// Загружает PNG‑изображение
String sourceFilePath = "OriginalRings.png";
String outputFilePath = "OriginalRingsOutput.png";
try (com.aspose.imaging.Image image = com.aspose.imaging.Image.load(sourceFilePath))
{
com.aspose.imaging.imageoptions.PngOptions options = new com.aspose.imaging.imageoptions.PngOptions();
options.setProgressive(true);
// Использовать индексированный тип цвета
options.setColorType(com.aspose.imaging.fileformats.png.PngColorType.IndexedColor);
// Использовать максимальное сжатие
options.setCompressionLevel(9);
// Получить ближайшую 8‑битную палитру цветов, покрывающую как можно больше пикселей, так чтобы палитровое изображение
// было почти визуально неотличимо от непалитрового.
options.setPalette(com.aspose.imaging.ColorPaletteHelper.getCloseImagePalette((com.aspose.imaging.RasterImage)image,
256, Aspose.Imaging.PaletteMiningMethod.Histogram));
image.save(outputFilePath, options);
}
// Размер выходного файла должен быть значительно уменьшен
Example: The following example shows how to save an image to PNG format using various options.
String dir = "c:\\temp\\";
// Создайте PNG‑изображение размером 100×100 пикселей.
// Вы также можете загрузить изображение любого поддерживаемого формата из файла или потока.
com.aspose.imaging.fileformats.png.PngImage pngImage = new com.aspose.imaging.fileformats.png.PngImage(100, 100);
try {
com.aspose.imaging.brushes.LinearGradientBrush gradientBrush = new com.aspose.imaging.brushes.LinearGradientBrush(
new com.aspose.imaging.Point(0, 0),
new com.aspose.imaging.Point(pngImage.getWidth(), pngImage.getHeight()),
com.aspose.imaging.Color.getBlue(),
com.aspose.imaging.Color.getTransparent());
com.aspose.imaging.Graphics graphics = new com.aspose.imaging.Graphics(pngImage);
// Заполните изображение синим полупрозрачным градиентом.
graphics.fillRectangle(gradientBrush, pngImage.getBounds());
com.aspose.imaging.imageoptions.PngOptions saveOptions = new com.aspose.imaging.imageoptions.PngOptions();
// Используйте прогрессивную загрузку.
saveOptions.setProgressive(true);
// Установите горизонтальное и вертикальное разрешение в 96 пикселей на дюйм.
saveOptions.setResolutionSettings(new com.aspose.imaging.ResolutionSetting(96.0, 96.0));
// Каждый пиксель представляет собой тройку (красный, зелёный, синий), за которой следует альфа‑канал.
saveOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
// Установите максимальный уровень сжатия.
saveOptions.setCompressionLevel(9);
// Это наилучшее сжатие, но с самой медленной скоростью выполнения.
// Адаптивная фильтрация означает, что процесс сохранения выберет наиболее подходящий фильтр для каждой строки данных.
saveOptions.setFilterType(com.aspose.imaging.fileformats.png.PngFilterType.Adaptive);
// Количество битов на канал.
saveOptions.setBitDepth((byte) 8);
// Сохранить в файл.
pngImage.save(dir + "output.png", saveOptions);
} finally {
pngImage.dispose();
}
getPngCompressionLevel()
public final int getPngCompressionLevel()
Возвращает уровень сжатия PngImage.
Returns: int — уровень сжатия PngImage.
setPngCompressionLevel(int value)
public final void setPngCompressionLevel(int value)
Устанавливает уровень сжатия PngImage.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| value | int | уровень сжатия PngImage. |
getBitDepth()
public final byte getBitDepth()
Возвращает значения глубины цвета в диапазоне 1, 2, 4, 8, 16.
Обратите внимание на следующие ограничения:
PngColorType.IndexedColor supports bit depth of 1, 2, 4, 8.
PngColorType.Grayscale, PngColorType.GrayscaleWithAlpha support bits depth of 8.
PngColorType.Truecolor, PngColorType.TruecolorWithAlpha support bits depth of 8, 16.
Returns: byte — значения глубины цвета в диапазоне 1, 2, 4, 8, 16.
setBitDepth(byte value)
public final void setBitDepth(byte value)
Устанавливает значения глубины цвета в диапазоне 1, 2, 4, 8, 16.
Обратите внимание на следующие ограничения:
PngColorType.IndexedColor supports bit depth of 1, 2, 4, 8.
PngColorType.Grayscale, PngColorType.GrayscaleWithAlpha support bits depth of 8.
PngColorType.Truecolor, PngColorType.TruecolorWithAlpha support bits depth of 8, 16.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| value | byte | значения глубины цвета в диапазоне 1, 2, 4, 8, 16. |
Example: The following example shows how to save an image to PNG format using various options.
String dir = "c:\\temp\\";
// Создайте PNG‑изображение размером 100×100 пикселей.
// Вы также можете загрузить изображение любого поддерживаемого формата из файла или потока.
com.aspose.imaging.fileformats.png.PngImage pngImage = new com.aspose.imaging.fileformats.png.PngImage(100, 100);
try {
com.aspose.imaging.brushes.LinearGradientBrush gradientBrush = new com.aspose.imaging.brushes.LinearGradientBrush(
new com.aspose.imaging.Point(0, 0),
new com.aspose.imaging.Point(pngImage.getWidth(), pngImage.getHeight()),
com.aspose.imaging.Color.getBlue(),
com.aspose.imaging.Color.getTransparent());
com.aspose.imaging.Graphics graphics = new com.aspose.imaging.Graphics(pngImage);
// Заполните изображение синим полупрозрачным градиентом.
graphics.fillRectangle(gradientBrush, pngImage.getBounds());
com.aspose.imaging.imageoptions.PngOptions saveOptions = new com.aspose.imaging.imageoptions.PngOptions();
// Используйте прогрессивную загрузку.
saveOptions.setProgressive(true);
// Установите горизонтальное и вертикальное разрешение в 96 пикселей на дюйм.
saveOptions.setResolutionSettings(new com.aspose.imaging.ResolutionSetting(96.0, 96.0));
// Каждый пиксель представляет собой тройку (красный, зелёный, синий), за которой следует альфа‑канал.
saveOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
// Установите максимальный уровень сжатия.
saveOptions.setCompressionLevel(9);
// Это наилучшее сжатие, но с самой медленной скоростью выполнения.
// Адаптивная фильтрация означает, что процесс сохранения выберет наиболее подходящий фильтр для каждой строки данных.
saveOptions.setFilterType(com.aspose.imaging.fileformats.png.PngFilterType.Adaptive);
// Количество битов на канал.
saveOptions.setBitDepth((byte) 8);
// Сохранить в файл.
pngImage.save(dir + "output.png", saveOptions);
} finally {
pngImage.dispose();
}