Class ColorPaletteHelper
Namespace: Aspose.Imaging
Assembly: Aspose.Imaging.dll (25.2.0)
Lớp trợ giúp cho việc thao tác với bảng màu.
public static class ColorPaletteHelper
Kế thừa
Các thành viên được kế thừa
object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
Phương thức
Create4Bit()
Tạo bảng màu 4 bit.
public static IColorPalette Create4Bit()
Trả về
Bảng màu 4 bit.
Create4BitGrayscale(bool)
Tạo bảng màu xám 4 bit.
public static IColorPalette Create4BitGrayscale(bool minIsWhite)
Tham số
minIsWhite
bool
nếu được đặt thành ```cstrue bảng màu bắt đầu với màu trắng, ngược lại nó bắt đầu với màu đen.
Trả về
Bảng màu xám 4 bit.
Create8Bit()
Tạo bảng màu 8 bit.
public static IColorPalette Create8Bit()
Trả về
Bảng màu 8 bit.
Create8BitGrayscale(bool)
Tạo bảng màu xám 8 bit.
public static IColorPalette Create8BitGrayscale(bool minIsWhite)
Tham số
minIsWhite
bool
nếu được đặt thành ```cstrue bảng màu bắt đầu với màu trắng, ngược lại nó bắt đầu với màu đen.
Trả về
Bảng màu xám 8 bit.
Ví dụ
Ví dụ sau tạo một hình ảnh BMP có bảng màu xám và sau đó lưu nó vào một tệp.```csharp [C#]
string dir = "c:\\temp\\";
Aspose.Imaging.ImageOptions.BmpOptions createOptions = new Aspose.Imaging.ImageOptions.BmpOptions();
// Lưu vào một tệp
createOptions.Source = new Aspose.Imaging.Sources.FileCreateSource(dir + "output.palette8bit.bmp", false);
// Sử dụng 8 bit mỗi pixel để giảm kích thước của hình ảnh đầu ra.
createOptions.BitsPerPixel = 8;
// Đặt bảng màu xám 8 bit tiêu chuẩn bao trùm tất cả các màu xám.
// Nếu hình ảnh đã xử lý chỉ chứa các màu xám, thì phiên bản có bảng màu của nó
// sẽ không thể phân biệt được so với phiên bản không có bảng màu.
createOptions.Palette = Aspose.Imaging.ColorPaletteHelper.Create8BitGrayscale(false);
// Lưu mà không nén.
// Bạn cũng có thể sử dụng nén RLE-8 để giảm kích thước của hình ảnh đầu ra.
createOptions.Compression = Aspose.Imaging.FileFormats.Bmp.BitmapCompression.Rgb;
// Đặt độ phân giải ngang và dọc là 96 dpi.
createOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);
// Tạo một hình ảnh BMP có kích thước 100 x 100 px và lưu nó vào một tệp.
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);
// Điền hình ảnh bằng một gradient xám
graphics.FillRectangle(gradientBrush, image.Bounds);
image.Save();
}
### <a id="Aspose_Imaging_ColorPaletteHelper_CreateGrayscale_System_Int32_"></a> CreateGrayscale\(int\)
Lấy bảng màu xám của số bit đã chỉ định. Các giá trị bit được phép là 1, 2, 4, 8.
```csharp
public static IColorPalette CreateGrayscale(int bits)
Tham số
bits
int
Số lượng bit.
Trả về
Bảng màu xám.
Ngoại lệ
bits
CreateMonochrome()
Tạo bảng màu đơn sắc chỉ chứa 2 màu.
public static IColorPalette CreateMonochrome()
Trả về
Bảng màu cho hình ảnh đơn sắc.
GetCloseImagePalette(RasterImage, int)
Lấy bảng màu từ hình ảnh raster (biến hình ảnh thành bảng màu) trong trường hợp hình ảnh không có bảng màu. Nếu bảng màu tồn tại, nó sẽ được sử dụng thay vì thực hiện các phép tính.
public static IColorPalette GetCloseImagePalette(RasterImage image, int entriesCount)
Tham số
image
RasterImage
Hình ảnh raster.
entriesCount
int
Số lượng mục mong muốn.
Trả về
Bảng màu bắt đầu với các màu thường gặp nhất từ image
và chứa entriesCount
mục.
Ví dụ
Ví dụ sau tải một hình ảnh BMP và lưu lại dưới dạng BMP sử dụng các tùy chọn lưu khác nhau.```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;
// Tạo BmpOptions
Aspose.Imaging.ImageOptions.BmpOptions saveOptions = new Aspose.Imaging.ImageOptions.BmpOptions();
// Sử dụng 8 bit mỗi pixel để giảm kích thước của hình ảnh đầu ra.
saveOptions.BitsPerPixel = 8;
// Đặt bảng màu 8 bit gần nhất bao trùm số lượng pixel của hình ảnh lớn nhất, để hình ảnh có bảng màu
// hầu như không thể phân biệt với hình ảnh không có bảng màu.
saveOptions.Palette = Aspose.Imaging.ColorPaletteHelper.GetCloseImagePalette(rasterImage, 256);
// Lưu mà không nén.
// Bạn cũng có thể sử dụng nén RLE-8 để giảm kích thước của hình ảnh đầu ra.
saveOptions.Compression = Aspose.Imaging.FileFormats.Bmp.BitmapCompression.Rgb;
// Đặt độ phân giải ngang và dọc là 96 dpi.
saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);
image.Save(dir + "sample.bmpoptions.bmp", saveOptions);
}
Ví dụ sau cho thấy cách biến một hình ảnh BMP thành bảng màu để giảm kích thước đầu ra của nó.```csharp
[C#]
// Tạo một hình ảnh BMP 100 x 100 px.
using (Aspose.Imaging.FileFormats.Bmp.BmpImage bmpImage = new Aspose.Imaging.FileFormats.Bmp.BmpImage(100, 100))
{
// Gradient tuyến tính từ góc trái trên đến góc phải dưới của hình ảnh.
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);
// Điền toàn bộ hình ảnh bằng cọ gradient tuyến tính.
Aspose.Imaging.Graphics gr = new Aspose.Imaging.Graphics(bmpImage);
gr.FillRectangle(brush, bmpImage.Bounds);
// Lấy bảng màu 8 bit gần nhất bao trùm càng nhiều pixel càng tốt, để hình ảnh có bảng màu
// hầu như không thể phân biệt với hình ảnh không có bảng màu.
Aspose.Imaging.IColorPalette palette = Aspose.Imaging.ColorPaletteHelper.GetCloseImagePalette(bmpImage, 256);
// Bảng màu 8 bit chứa tối đa 256 màu.
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("Kích thước hình ảnh có bảng màu là {0} bytes.", stream.Length);
}
using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
{
bmpImage.Save(stream);
System.Console.WriteLine("Kích thước hình ảnh không có bảng màu là {0} bytes.", stream.Length);
}
}
// Đầu ra trông như thế này:
// Kích thước hình ảnh có bảng màu là 11078 bytes.
// Kích thước hình ảnh không có bảng màu là 40054 bytes.
GetCloseImagePalette(RasterImage, int, PaletteMiningMethod)
Lấy bảng màu từ hình ảnh raster (biến hình ảnh thành bảng màu) trong trường hợp hình ảnh không có bảng màu. Bảng màu sẽ được tối ưu hóa để có chất lượng hình ảnh chỉ mục tốt hơn hoặc được lấy “NHƯ ĐANG CÓ” khi sử dụng PaletteMiningMethod.UseCurrentPalette.
public static IColorPalette GetCloseImagePalette(RasterImage image, int entriesCount, PaletteMiningMethod paletteMiningMethod)
Tham số
image
RasterImage
Hình ảnh raster.
entriesCount
int
Số lượng mục mong muốn.
paletteMiningMethod
PaletteMiningMethod
Phương pháp khai thác bảng màu.
Trả về
Bảng màu bắt đầu với các màu thường gặp nhất từ image
và chứa entriesCount
mục.
Ví dụ
Ví dụ sau cho thấy cách nén một hình ảnh PNG, sử dụng màu chỉ mục với bảng màu phù hợp nhất.```csharp [C#]
// Tải hình ảnh 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,
// Sử dụng loại màu chỉ mục
ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.IndexedColor,
// Sử dụng nén tối đa
CompressionLevel = 9,
// Lấy bảng màu 8 bit gần nhất bao trùm càng nhiều pixel càng tốt, để hình ảnh có bảng màu
// hầu như không thể phân biệt với hình ảnh không có bảng màu.
Palette = Aspose.Imaging.ColorPaletteHelper.GetCloseImagePalette((Aspose.Imaging.RasterImage)image, 256, Aspose.Imaging.PaletteMiningMethod.Histogram)
});
}
// Kích thước tệp đầu ra nên giảm đáng kể
### <a id="Aspose_Imaging_ColorPaletteHelper_GetCloseImagePalette_Aspose_Imaging_RasterImage_Aspose_Imaging_Rectangle_System_Int32_"></a> GetCloseImagePalette\(RasterImage, Rectangle, int\)
Lấy bảng màu từ hình ảnh raster (biến hình ảnh thành bảng màu) trong trường hợp hình ảnh không có bảng màu. Nếu bảng màu tồn tại, nó sẽ được sử dụng thay vì thực hiện các phép tính.
```csharp
public static IColorPalette GetCloseImagePalette(RasterImage image, Rectangle destBounds, int entriesCount)
Tham số
image
RasterImage
Hình ảnh raster.
destBounds
Rectangle
Giới hạn hình ảnh đích.
entriesCount
int
Số lượng mục mong muốn.
Trả về
Bảng màu bắt đầu với các màu thường gặp nhất từ image
và chứa entriesCount
mục.
GetCloseImagePalette(RasterImage, Rectangle, int, bool)
Lấy bảng màu từ hình ảnh raster (biến hình ảnh thành bảng màu) trong trường hợp hình ảnh không có bảng màu. Nếu bảng màu tồn tại, nó sẽ được sử dụng thay vì thực hiện các phép tính.
public static IColorPalette GetCloseImagePalette(RasterImage image, Rectangle destBounds, int entriesCount, bool useImagePalette)
Tham số
image
RasterImage
Hình ảnh raster.
destBounds
Rectangle
Giới hạn hình ảnh đích.
entriesCount
int
Số lượng mục mong muốn.
useImagePalette
bool
Nếu được đặt, nó sẽ sử dụng bảng màu của chính hình ảnh nếu có.
Trả về
Bảng màu bắt đầu với các màu thường gặp nhất từ image
và chứa entriesCount
mục.
GetCloseImagePalette(RasterImage, Rectangle, int, bool, Color)
Lấy bảng màu từ hình ảnh raster (biến hình ảnh thành bảng màu) trong trường hợp hình ảnh không có bảng màu. Nếu bảng màu tồn tại, nó sẽ được sử dụng thay vì thực hiện các phép tính.
public static IColorPalette GetCloseImagePalette(RasterImage image, Rectangle destBounds, int entriesCount, bool useImagePalette, Color alphaBlendInColor)
Tham số
image
RasterImage
Hình ảnh raster.
destBounds
Rectangle
Giới hạn hình ảnh đích.
entriesCount
int
Số lượng mục mong muốn.
useImagePalette
bool
Nếu được đặt, nó sẽ sử dụng bảng màu của chính hình ảnh nếu có.
alphaBlendInColor
Color
Màu sắc sẽ được sử dụng làm màu nền cho việc thay thế alpha trong suốt.
Trả về
Bảng màu bắt đầu với các màu thường gặp nhất từ image
và chứa entriesCount
mục.
GetCloseImagePalette(RasterImage, Rectangle, int, bool, Color, bool)
Lấy bảng màu từ hình ảnh raster (biến hình ảnh thành bảng màu) trong trường hợp hình ảnh không có bảng màu. Nếu bảng màu tồn tại, nó sẽ được sử dụng thay vì thực hiện các phép tính.
public static IColorPalette GetCloseImagePalette(RasterImage image, Rectangle destBounds, int entriesCount, bool useImagePalette, Color alphaBlendInColor, bool keepTransparency)
Tham số
image
RasterImage
Hình ảnh raster.
destBounds
Rectangle
Giới hạn hình ảnh đích.
entriesCount
int
Số lượng mục mong muốn.
useImagePalette
bool
Nếu được đặt, nó sẽ sử dụng bảng màu của chính hình ảnh nếu có.
alphaBlendInColor
Color
Màu sắc sẽ được sử dụng làm màu nền cho việc thay thế alpha trong suốt.
keepTransparency
bool
Nếu được đặt, nó sẽ xem xét các bit kênh alpha của các màu hình ảnh.
Trả về
Bảng màu bắt đầu với các màu thường gặp nhất từ image
và chứa entriesCount
mục.
GetCloseTransparentImagePalette(RasterImage, int)
Lấy bảng màu từ hình ảnh raster (biến hình ảnh thành bảng màu) trong trường hợp hình ảnh không có bảng màu. Nếu bảng màu tồn tại, nó sẽ được sử dụng thay vì thực hiện các phép tính.
public static IColorPalette GetCloseTransparentImagePalette(RasterImage image, int entriesCount)
Tham số
image
RasterImage
Hình ảnh raster.
entriesCount
int
Số lượng mục mong muốn.
Trả về
Bảng màu bắt đầu với các màu thường gặp nhất từ image
và chứa entriesCount
mục.
GetDownscalePalette(RasterImage)
Lấy bảng màu 256 màu, được tạo từ các bit cao của các giá trị màu hình ảnh ban đầu.
public static ColorPalette GetDownscalePalette(RasterImage image)
Tham số
image
RasterImage
Hình ảnh.
Trả về
Aspose.Imaging.ColorPalette.
GetUniformColorPalette(RasterImage)
Lấy bảng màu đồng nhất 256 màu.
public static ColorPalette GetUniformColorPalette(RasterImage image)
Tham số
image
RasterImage
Hình ảnh.
Trả về
Aspose.Imaging.ColorPalette.
HasTransparentColors(IColorPalette)
Xác định xem bảng màu đã chỉ định có màu trong suốt hay không.
public static bool HasTransparentColors(IColorPalette palette)
Tham số
palette
IColorPalette
Bảng màu.
Trả về
cstrue</code> nếu bảng màu đã chỉ định có màu trong suốt; ngược lại,
csfalse.
Ngoại lệ
palette
là null.