Class ColorPaletteHelper
Namespace: Aspose.Imaging
Assembly: Aspose.Imaging.dll (25.2.0)
Вспомогательный класс для работы с цветовыми палитрами.
public static class ColorPaletteHelper
Наследование
Унаследованные члены
object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
Методы
Create4Bit()
Создает 4-битную цветовую палитру.
public static IColorPalette Create4Bit()
Возвращает
4-битная цветовая палитра.
Create4BitGrayscale(bool)
Создает 4-битную градацию серого.
public static IColorPalette Create4BitGrayscale(bool minIsWhite)
Параметры
minIsWhite
bool
если установлено в ```cstrue, палитра начинается с белого цвета, в противном случае - с черного цвета.
Возвращает
4-битная градация серого.
Create8Bit()
Создает 8-битную цветовую палитру.
public static IColorPalette Create8Bit()
Возвращает
8-битная цветовая палитра.
Create8BitGrayscale(bool)
Создает 8-битную градацию серого.
public static IColorPalette Create8BitGrayscale(bool minIsWhite)
Параметры
minIsWhite
bool
если установлено в ```cstrue, палитра начинается с белого цвета, в противном случае - с черного цвета.
Возвращает
8-битная градация серого.
Примеры
Следующий пример создает палитризованное изображение в градациях серого BMP и затем сохраняет его в файл.```csharp [C#]
string dir = "c:\\temp\\";
Aspose.Imaging.ImageOptions.BmpOptions createOptions = new Aspose.Imaging.ImageOptions.BmpOptions();
// Сохранить в файл
createOptions.Source = new Aspose.Imaging.Sources.FileCreateSource(dir + "output.palette8bit.bmp", false);
// Использовать 8 бит на пиксель, чтобы уменьшить размер выходного изображения.
createOptions.BitsPerPixel = 8;
// Установить стандартную 8-битную градацию серого, которая охватывает все серые цвета.
// Если обрабатываемое изображение содержит только серые цвета, то его палитризованная версия
// визуально неотличима от непалитризованной.
createOptions.Palette = Aspose.Imaging.ColorPaletteHelper.Create8BitGrayscale(false);
// Сохранить без сжатия.
// Вы также можете использовать сжатие RLE-8, чтобы уменьшить размер выходного изображения.
createOptions.Compression = Aspose.Imaging.FileFormats.Bmp.BitmapCompression.Rgb;
// Установить горизонтальное и вертикальное разрешение на 96 dpi.
createOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);
// Создать изображение BMP размером 100 x 100 пикселей и сохранить его в файл.
using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Create(createOptions, 100, 100))
{
Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(image);
Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
new Aspose.Imaging.Point(0, 0),
new Aspose.Imaging.Point(image.Width, image.Height),
Aspose.Imaging.Color.Black,
Aspose.Imaging.Color.White);
// Заполнить изображение градиентом в градациях серого
graphics.FillRectangle(gradientBrush, image.Bounds);
image.Save();
}
### <a id="Aspose_Imaging_ColorPaletteHelper_CreateGrayscale_System_Int32_"></a> CreateGrayscale\(int\)
Получает градацию серого с указанным количеством бит. Допустимые значения бит: 1, 2, 4, 8.
```csharp
public static IColorPalette CreateGrayscale(int bits)
Параметры
bits
int
Количество бит.
Возвращает
Градация серого.
Исключения
bits
CreateMonochrome()
Создает монохромную цветовую палитру, содержащую только 2 цвета.
public static IColorPalette CreateMonochrome()
Возвращает
Цветовая палитра для монохромных изображений.
GetCloseImagePalette(RasterImage, int)
Получает цветовую палитру из растрового изображения (палитризует изображение) в случае, если у изображения ее нет. Если палитра существует, она будет использована вместо выполнения расчетов.
public static IColorPalette GetCloseImagePalette(RasterImage image, int entriesCount)
Параметры
image
RasterImage
Растровое изображение.
entriesCount
int
Желаемое количество записей.
Возвращает
Цветовая палитра, которая начинается с наиболее частых цветов из image
и содержит entriesCount
записей.
Примеры
Следующий пример загружает BMP изображение и сохраняет его обратно в BMP с использованием различных параметров сохранения.```csharp [C#]
string dir = "c:\\temp\\";
using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Load(dir + "sample.bmp"))
{
Aspose.Imaging.RasterImage rasterImage = (Aspose.Imaging.RasterImage)image;
// Создать BmpOptions
Aspose.Imaging.ImageOptions.BmpOptions saveOptions = new Aspose.Imaging.ImageOptions.BmpOptions();
// Использовать 8 бит на пиксель, чтобы уменьшить размер выходного изображения.
saveOptions.BitsPerPixel = 8;
// Установить ближайшую 8-битную цветовую палитру, которая охватывает максимальное количество пикселей изображения, так что палитризованное изображение
// практически визуально неотличимо от непалитризованного.
saveOptions.Palette = Aspose.Imaging.ColorPaletteHelper.GetCloseImagePalette(rasterImage, 256);
// Сохранить без сжатия.
// Вы также можете использовать сжатие RLE-8, чтобы уменьшить размер выходного изображения.
saveOptions.Compression = Aspose.Imaging.FileFormats.Bmp.BitmapCompression.Rgb;
// Установить горизонтальное и вертикальное разрешение на 96 dpi.
saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);
image.Save(dir + "sample.bmpoptions.bmp", saveOptions);
}
Следующий пример показывает, как палитризовать BMP изображение для уменьшения его выходного размера.```csharp
[C#]
// Создать BMP изображение 100 x 100 пикселей.
using (Aspose.Imaging.FileFormats.Bmp.BmpImage bmpImage = new Aspose.Imaging.FileFormats.Bmp.BmpImage(100, 100))
{
// Линейный градиент от верхнего левого до нижнего правого угла изображения.
Aspose.Imaging.Brushes.LinearGradientBrush brush =
new Aspose.Imaging.Brushes.LinearGradientBrush(
new Aspose.Imaging.Point(0, 0),
new Aspose.Imaging.Point(bmpImage.Width, bmpImage.Height),
Aspose.Imaging.Color.Red,
Aspose.Imaging.Color.Green);
// Заполнить все изображение линейным градиентом.
Aspose.Imaging.Graphics gr = new Aspose.Imaging.Graphics(bmpImage);
gr.FillRectangle(brush, bmpImage.Bounds);
// Получить ближайшую 8-битную цветовую палитру, которая охватывает как можно больше пикселей, так что палитризованное изображение
// практически визуально неотличимо от непалитризованного.
Aspose.Imaging.IColorPalette palette = Aspose.Imaging.ColorPaletteHelper.GetCloseImagePalette(bmpImage, 256);
// 8-битная палитра содержит максимум 256 цветов.
Aspose.Imaging.ImageOptions.BmpOptions saveOptions = new Aspose.Imaging.ImageOptions.BmpOptions();
saveOptions.Palette = palette;
saveOptions.BitsPerPixel = 8;
using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
{
bmpImage.Save(stream, saveOptions);
System.Console.WriteLine("Размер палитризованного изображения составляет {0} байт.", stream.Length);
}
using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
{
bmpImage.Save(stream);
System.Console.WriteLine("Размер непалитризованного изображения составляет {0} байт.", stream.Length);
}
}
// Вывод выглядит следующим образом:
// Размер палитризованного изображения составляет 11078 байт.
// Размер непалитризованного изображения составляет 40054 байт.
GetCloseImagePalette(RasterImage, int, PaletteMiningMethod)
Получает цветовую палитру из растрового изображения (палитризует изображение) в случае, если у изображения ее нет. Палитра будет оптимизирована для лучшего качества индексированного изображения или взята “КАК ЕСТЬ”, когда используется PaletteMiningMethod.UseCurrentPalette.
public static IColorPalette GetCloseImagePalette(RasterImage image, int entriesCount, PaletteMiningMethod paletteMiningMethod)
Параметры
image
RasterImage
Растровое изображение.
entriesCount
int
Желаемое количество записей.
paletteMiningMethod
PaletteMiningMethod
Метод извлечения палитры.
Возвращает
Цветовая палитра, которая начинается с наиболее частых цветов из image
и содержит entriesCount
записей.
Примеры
Следующий пример показывает, как сжать PNG изображение, используя индексированный цвет с палитрой наилучшего соответствия.```csharp [C#]
// Загружает png изображение
string sourceFilePath="OriginalRings.png";
string outputFilePath="OriginalRingsOutput.png";
using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Load(sourceFilePath))
{
image.Save(outputFilePath, new Aspose.Imaging.ImageOptions.PngOptions()
{
Progressive = true,
// Использовать индексированный цвет
ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.IndexedColor,
// Использовать максимальное сжатие
CompressionLevel = 9,
// Получить ближайшую 8-битную цветовую палитру, которая охватывает как можно больше пикселей, так что палитризованное изображение
// практически визуально неотличимо от непалитризованного.
Palette = Aspose.Imaging.ColorPaletteHelper.GetCloseImagePalette((Aspose.Imaging.RasterImage)image, 256, Aspose.Imaging.PaletteMiningMethod.Histogram)
});
}
// Размер выходного файла должен быть значительно уменьшен
### <a id="Aspose_Imaging_ColorPaletteHelper_GetCloseImagePalette_Aspose_Imaging_RasterImage_Aspose_Imaging_Rectangle_System_Int32_"></a> GetCloseImagePalette\(RasterImage, Rectangle, int\)
Получает цветовую палитру из растрового изображения (палитризует изображение) в случае, если у изображения ее нет. Если палитра существует, она будет использована вместо выполнения расчетов.
```csharp
public static IColorPalette GetCloseImagePalette(RasterImage image, Rectangle destBounds, int entriesCount)
Параметры
image
RasterImage
Растровое изображение.
destBounds
Rectangle
Границы целевого изображения.
entriesCount
int
Желаемое количество записей.
Возвращает
Цветовая палитра, которая начинается с наиболее частых цветов из image
и содержит entriesCount
записей.
GetCloseImagePalette(RasterImage, Rectangle, int, bool)
Получает цветовую палитру из растрового изображения (палитризует изображение) в случае, если у изображения ее нет. Если палитра существует, она будет использована вместо выполнения расчетов.
public static IColorPalette GetCloseImagePalette(RasterImage image, Rectangle destBounds, int entriesCount, bool useImagePalette)
Параметры
image
RasterImage
Растровое изображение.
destBounds
Rectangle
Границы целевого изображения.
entriesCount
int
Желаемое количество записей.
useImagePalette
bool
Если установлено, будет использоваться собственная палитра изображения, если она доступна.
Возвращает
Цветовая палитра, которая начинается с наиболее частых цветов из image
и содержит entriesCount
записей.
GetCloseImagePalette(RasterImage, Rectangle, int, bool, Color)
Получает цветовую палитру из растрового изображения (палитризует изображение) в случае, если у изображения ее нет. Если палитра существует, она будет использована вместо выполнения расчетов.
public static IColorPalette GetCloseImagePalette(RasterImage image, Rectangle destBounds, int entriesCount, bool useImagePalette, Color alphaBlendInColor)
Параметры
image
RasterImage
Растровое изображение.
destBounds
Rectangle
Границы целевого изображения.
entriesCount
int
Желаемое количество записей.
useImagePalette
bool
Если установлено, будет использоваться собственная палитра изображения, если она доступна.
alphaBlendInColor
Color
Цвет, который должен использоваться в качестве фона для полупрозрачной замены альфа.
Возвращает
Цветовая палитра, которая начинается с наиболее частых цветов из image
и содержит entriesCount
записей.
GetCloseImagePalette(RasterImage, Rectangle, int, bool, Color, bool)
Получает цветовую палитру из растрового изображения (палитризует изображение) в случае, если у изображения ее нет. Если палитра существует, она будет использована вместо выполнения расчетов.
public static IColorPalette GetCloseImagePalette(RasterImage image, Rectangle destBounds, int entriesCount, bool useImagePalette, Color alphaBlendInColor, bool keepTransparency)
Параметры
image
RasterImage
Растровое изображение.
destBounds
Rectangle
Границы целевого изображения.
entriesCount
int
Желаемое количество записей.
useImagePalette
bool
Если установлено, будет использоваться собственная палитра изображения, если она доступна.
alphaBlendInColor
Color
Цвет, который должен использоваться в качестве фона для полупрозрачной замены альфа.
keepTransparency
bool
Если установлено, будет учитываться альфа-канал цветов изображения.
Возвращает
Цветовая палитра, которая начинается с наиболее частых цветов из image
и содержит entriesCount
записей.
GetCloseTransparentImagePalette(RasterImage, int)
Получает цветовую палитру из растрового изображения (палитризует изображение) в случае, если у изображения ее нет. Если палитра существует, она будет использована вместо выполнения расчетов.
public static IColorPalette GetCloseTransparentImagePalette(RasterImage image, int entriesCount)
Параметры
image
RasterImage
Растровое изображение.
entriesCount
int
Желаемое количество записей.
Возвращает
Цветовая палитра, которая начинается с наиболее частых цветов из image
и содержит entriesCount
записей.
GetDownscalePalette(RasterImage)
Получить 256-битную цветовую палитру, составленную из старших битов значений цвета начального изображения.
public static ColorPalette GetDownscalePalette(RasterImage image)
Параметры
image
RasterImage
Изображение.
Возвращает
Aspose.Imaging.ColorPalette.
GetUniformColorPalette(RasterImage)
Получить однородную 256-битную цветовую палитру.
public static ColorPalette GetUniformColorPalette(RasterImage image)
Параметры
image
RasterImage
Изображение.
Возвращает
Aspose.Imaging.ColorPalette.
HasTransparentColors(IColorPalette)
Определяет, имеет ли указанная палитра прозрачные цвета.
public static bool HasTransparentColors(IColorPalette palette)
Параметры
palette
IColorPalette
Палитра.
Возвращает
cstrue</code>, если указанная палитра имеет прозрачные цвета; в противном случае
csfalse.
Исключения
palette
равно null.