类 BmpImage

BmpImage class

您可以轻松处理 Bitmap (BMP) 和 Device Independent Bitmap (DIB) 文件,从而高效地操作和处理光栅图像。通过对图像执行各种操作,此 API 简化了工作流程,为开发人员提供了在其软件应用中使用 BMP 和 DIB 格式的可靠工具包。

public sealed class BmpImage : RasterCachedImage

构造函数

名称描述
BmpImage(RasterImage)通过使用 RasterImage 对象初始化,轻松创建 BmpImage 类的新实例。非常适合希望无缝将现有光栅图像转换为 BmpImage 格式的开发人员,确保兼容性并便于集成到其项目中。
BmpImage(Stream)通过使用此构造函数并以流作为输入,轻松开始使用 BmpImage 类并初始化新实例。非常适合希望从各种数据源方便地使用 BmpImage 对象的开发人员,确保灵活性和易于集成。
BmpImage(string)使用此构造函数轻松开始使用 BmpImage 类并初始化新实例。非常适合希望快速高效使用 BmpImage 对象的开发人员。
BmpImage(int, int)通过使用指定的宽度和高度参数创建新实例,轻松开始使用 BmpImage 类。非常适合希望以自定义尺寸生成 BmpImage 对象的开发人员,确保灵活性并便于集成到其项目中。
BmpImage(int, int, ushort, IColorPalette)通过使用宽度、高度、位深度和调色板等参数初始化新实例,顺畅地开始使用 BmpImage 类。非常适合希望以简便方式创建具有自定义尺寸和颜色配置的 BmpImage 对象的开发人员,确保项目的灵活性和高效性。
BmpImage(RasterImage, ushort, BitmapCompression, double, double)通过使用 rasterImage 并指定 bitsPerPixel 和 compression 等参数创建新实例,顺畅地开始使用 BmpImage 类。非常适合希望以简便方式处理 BmpImage 对象的开发人员,确保项目的灵活性和高效性。
BmpImage(Stream, ushort, BitmapCompression, double, double)通过使用流并指定 bitsPerPixel 和 compression 等参数创建新实例,顺畅地开始使用 BmpImage 类。非常适合希望以简便方式处理 BmpImage 对象的开发人员,确保项目的灵活性和高效性。
BmpImage(string, ushort, BitmapCompression, double, double)使用此构造函数并指定路径、bitsPerPixel 和 compression 等参数,轻松创建 BmpImage 类的新实例。非常适合希望快速高效初始化 BmpImage 对象并精确控制图像特性的开发人员。
BmpImage(int, int, ushort, IColorPalette, BitmapCompression, double, double)使用此构造函数并指定宽度、高度、bitsPerPixel 和调色板等参数,轻松创建 BmpImage 类的新实例。非常适合希望以便捷方式生成具有自定义尺寸和颜色配置的 BmpImage 对象的开发人员,确保项目的灵活性和易于集成。

属性

名称描述
AutoAdjustPalette { get; set; }获取或设置指示是否自动调整调色板的值。
virtual BackgroundColor { get; set; }获取或设置背景颜色的值。
BitmapInfoHeader { get; }使用此简洁函数快速获取位图图像的关键细节。非常适合需要检索图像头信息的开发人员。
override BitsPerPixel { get; }使用此属性轻松获取图像的每像素位数。非常适合希望快速了解图像质量和深度的开发人员。
Bounds { get; }获取图像的边界。
BufferSizeHint { get; set; }获取或设置缓冲区大小提示,该提示定义了所有内部缓冲区的最大允许大小。
Compression { get; }使用此属性轻松获取图像使用的压缩类型。非常适合需要快速获取图像压缩信息的开发人员。
Container { get; }获取 Image 容器。
DataStreamContainer { get; }获取对象的数据流。
Disposed { get; }获取一个值,指示此实例是否已释放。
ExifData { get; set; }获取或设置 Exif 数据。
override FileFormat { get; }使用此友好属性轻松获取文件格式值。非常适合希望快速获取文件格式信息的开发人员。
override HasAlpha { get; }获取一个值,指示此实例是否具有 alpha。
virtual HasBackgroundColor { get; set; }获取或设置指示图像是否具有背景颜色的值。
virtual HasTransparentColor { get; set; }获取或设置一个值,指示此 RasterImage 实例是否具有透明颜色。
override Height { get; }使用此属性轻松获取图像的高度。非常适合需要快速获取图像尺寸信息的开发人员。
override HorizontalResolution { get; set; }此属性允许您轻松获取或设置 RasterImage 对象的水平分辨率(以每英寸像素数衡量)。非常适合需要对应用程序中的图像分辨率进行精确控制的开发人员。
virtual ImageOpacity { get; }获取此图像的不透明度。
InterruptMonitor { get; set; }获取或设置中断监视器。
override IsCached { get; }获取指示图像数据当前是否已缓存的值。
IsRawDataAvailable { get; }获取指示是否可进行原始数据加载的值。
virtual Metadata { get; }获取图像元数据。
Palette { get; set; }获取或设置颜色调色板。当像素直接表示时,调色板不被使用。
virtual PremultiplyComponents { get; set; }获取或设置一个值,指示图像组件是否必须预乘。
RawCustomColorConverter { get; set; }获取或设置自定义颜色转换器
override RawDataFormat { get; }使用此友好函数轻松获取原始数据的格式。非常适合希望快速获取数据格式关键信息的开发人员。
RawDataSettings { get; }获取当前原始数据设置。注意,使用这些设置时数据将在不进行转换的情况下加载。
RawFallbackIndex { get; set; }获取或设置调色板索引超出范围时使用的回退索引
RawIndexedColorConverter { get; set; }获取或设置索引颜色转换器
override RawLineSize { get; }使用此简洁属性快速获取每行原始数据的字节大小。非常适合需要高效处理原始图像数据的开发人员。
Size { get; }获取图像尺寸。
virtual TransparentColor { get; set; }获取图像透明颜色。
virtual UpdateXmpData { get; set; }获取或设置一个值,指示是否更新 XMP 元数据。
override UsePalette { get; }获取一个值,指示是否使用图像调色板。
virtual UseRawData { get; set; }获取或设置一个值,指示在可用原始数据加载时是否使用原始数据加载。
override VerticalResolution { get; set; }使用此属性轻松获取或设置此 RasterImage 对象的垂直分辨率(以每英寸像素数衡量)。非常适合在其应用程序中需要对图像分辨率进行精确控制的开发人员。
override Width { get; }使用此属性轻松获取图像的宽度。非常适合希望快速获取图像尺寸信息的开发人员。
XmpData { get; set; }获取或设置 Xmp 数据。

方法

名称描述
override AdjustBrightness(int)调整图像的亮度。
override AdjustContrast(float)图像对比度。
override AdjustGamma(float)图像的伽马校正。
override AdjustGamma(float, float, float)图像的伽马校正。
override AnalyzePercentageDigitalSignature(string)计算提取数据与原始密码之间的相似度百分比。
override AutoBrightnessContrast()对整幅图像执行自动自适应亮度和对比度归一化。
AutoRotate()自动根据从 Exif 元数据提取的方向数据旋转图像。此方法确保图像以正确的方向显示,提升用户体验并消除手动调整的需求。通过分析 Exif 信息,图像相应地被旋转,提供跨平台和设备的无缝观看体验。此自动旋转过程简化了图像处理,并在处理大量方向各异的图像时提升整体可用性。
override BinarizeBradley(double)使用 Bradley 自适应阈值算法和积分图阈值对图像进行二值化
override BinarizeBradley(double, int)使用 Bradley 自适应阈值算法和积分图阈值对图像进行二值化
override BinarizeFixed(byte)使用预定义阈值对图像进行二值化
override BinarizeOtsu()使用 Otsu 阈值法对图像进行二值化
Blend(Point, RasterImage, byte)将此图像实例与 overlay 图像混合。
override Blend(Point, RasterImage, Rectangle, byte)将此图像实例与 overlay 图像混合。
override CacheData()缓存数据并确保不会从底层 DataStreamContainer 加载额外数据。
CanSave(ImageOptionsBase)确定图像是否可以保存为传入保存选项所表示的指定文件格式。
override Crop(Rectangle)裁剪图像。
virtual Crop(int, int, int, int)使用位移裁剪图像。
Dispose()释放当前实例。
Dither(DitheringMethod, int)对当前图像执行抖动处理。
override Dither(DitheringMethod, int, IColorPalette)对当前图像执行抖动处理。
override EmbedDigitalSignature(string)使用隐写技术将基于提供的密码的数字签名嵌入图像中。
virtual Filter(Rectangle, FilterOptionsBase)过滤指定的矩形。
GetArgb32Pixel(int, int)获取图像的 32 位 ARGB 像素。
GetDefaultArgb32Pixels(Rectangle)获取默认的 32 位 ARGB 像素数组。
override GetDefaultOptions(object[])使用此简洁方法轻松检索默认选项。适用于希望快速访问默认图像设置或配置的开发者。
GetDefaultPixels(Rectangle, IPartialArgb32PixelLoader)使用部分像素加载器获取默认像素数组。
GetDefaultRawData(Rectangle, RawDataSettings)获取默认原始数据数组。
GetDefaultRawData(Rectangle, IPartialRawDataLoader, RawDataSettings)使用部分像素加载器获取默认原始数据数组。
virtual GetModifyDate(bool)获取资源图像最近修改的日期和时间。
virtual GetOriginalOptions()根据原始文件设置获取选项。这有助于保持原始图像的位深度和其他参数不变。例如,如果我们加载一幅每像素 1 位的黑白 PNG 图像,然后使用 Save 方法保存,输出的 PNG 图像将是每像素 8 位。为避免这种情况并以每像素 1 位保存 PNG 图像,请使用此方法获取相应的保存选项,并将其作为第二个参数传递给 Save 方法。
GetPixel(int, int)获取图像像素。
virtual GetSerializedStream(ImageOptionsBase, Rectangle, out int)转换为 aps。
GetSkewAngle()获取倾斜角度。此方法适用于扫描的文本文档,用于在扫描时确定倾斜角度。
override Grayscale()将图像转换为灰度表示
override IsDigitalSigned(string, int)快速检查图像是否已数字签名,使用提供的密码和阈值。
LoadArgb32Pixels(Rectangle)加载 32 位 ARGB 像素。
LoadArgb64Pixels(Rectangle)加载 64 位 ARGB 像素。
LoadCmyk32Pixels(Rectangle)加载 CMYK 格式的像素。
LoadPartialArgb32Pixels(Rectangle, IPartialArgb32PixelLoader)按包部分加载 32 位 ARGB 像素。
LoadPartialArgb64Pixels(Rectangle, IPartialArgb64PixelLoader)按包部分加载 64 位 ARGB 像素。
LoadPartialPixels(Rectangle, IPartialPixelLoader)按包部分加载像素。
LoadPixels(Rectangle)加载像素。
LoadRawData(Rectangle, RawDataSettings, IPartialRawDataLoader)加载原始数据。
LoadRawData(Rectangle, Rectangle, RawDataSettings, IPartialRawDataLoader)加载原始数据。
NormalizeAngle()归一化角度。此方法适用于扫描的文本文档,以消除倾斜扫描。此方法使用GetSkewAngleRotate 方法。
virtual NormalizeAngle(bool, Color)归一化角度。此方法适用于扫描的文本文档,以消除倾斜扫描。此方法使用GetSkewAngleRotate 方法。
override NormalizeHistogram()归一化图像直方图——调整像素值以使用全部可用范围。
ReadArgb32ScanLine(int)按指定的扫描线索引读取整条扫描线。
ReadScanLine(int)按指定的扫描线索引读取整条扫描线。
override RemoveMetadata()通过将此XmpData 值设为 null 来移除此图像实例的元数据。
ReplaceColor(Color, byte, Color)将一种颜色替换为另一种颜色,允许差异并保留原始 alpha 值以保持平滑边缘。
virtual ReplaceColor(int, byte, int)将一种颜色替换为另一种颜色,允许差异并保留原始 alpha 值以保持平滑边缘。
ReplaceNonTransparentColors(Color)将所有非透明颜色替换为新颜色,并保留原始 alpha 值以保持平滑边缘。注意:如果在没有透明度的图像上使用,它将把所有颜色替换为单一颜色。
virtual ReplaceNonTransparentColors(int)将所有非透明颜色替换为新颜色,并保留原始 alpha 值以保持平滑边缘。注意:如果在没有透明度的图像上使用,它将把所有颜色替换为单一颜色。
Resize(int, int)调整图像大小。默认使用 NearestNeighbourResample。
override Resize(int, int, ImageResizeSettings)调整图像大小。
override Resize(int, int, ResizeType)调整图像大小。
ResizeHeightProportionally(int)按比例调整高度。默认使用 NearestNeighbourResample。
virtual ResizeHeightProportionally(int, ImageResizeSettings)按比例调整高度。
virtual ResizeHeightProportionally(int, ResizeType)按比例调整高度。
ResizeWidthProportionally(int)按比例调整宽度。使用默认的 NearestNeighbourResample。
virtual ResizeWidthProportionally(int, ImageResizeSettings)按比例调整宽度。
virtual ResizeWidthProportionally(int, ResizeType)按比例调整宽度。
override Rotate(float)围绕中心旋转图像。
override Rotate(float, bool, Color)围绕中心旋转图像。
override RotateFlip(RotateFlipType)旋转、翻转或同时旋转和翻转图像。
Save()将图像数据保存到底层流。
Save(Stream)将对象的数据保存到指定的流。
override Save(string)将图像保存到指定的文件位置。
Save(Stream, ImageOptionsBase)根据保存选项,将图像数据以指定的文件格式保存到指定的流中。
virtual Save(string, bool)将对象的数据保存到指定的文件位置。
virtual Save(string, ImageOptionsBase)根据保存选项,将对象的数据以指定的文件格式保存到指定的文件位置。
override Save(Stream, ImageOptionsBase, Rectangle)根据保存选项,将图像数据以指定的文件格式保存到指定的流中。
virtual Save(string, ImageOptionsBase, Rectangle)根据保存选项,将对象的数据以指定的文件格式保存到指定的文件位置。
SaveArgb32Pixels(Rectangle, int[])保存 32 位 ARGB 像素。
SaveCmyk32Pixels(Rectangle, int[])保存像素。
SavePixels(Rectangle, Color[])保存像素。
SaveRawData(byte[], int, Rectangle, RawDataSettings)保存原始数据。
SetArgb32Pixel(int, int, int)为指定位置设置图像的 32 位 ARGB 像素。
override SetPalette(IColorPalette, bool)设置图像调色板。
SetPixel(int, int, Color)为指定位置设置图像像素。
override SetResolution(double, double)使用此用户友好方法轻松调整您的RasterImage分辨率。完美适用于希望在应用程序中精确控制图像分辨率的开发者。
override ToBitmap()使用此简易方法轻松将光栅图像转换为位图。对于需要在不同图像格式之间无缝切换的开发者而言,这非常理想。
virtual TrySetMetadata(IImageMetadataFormat)尝试设置 metadata 实例,前提是此 Image 实例支持并实现了 IImageMetadataFormat 类型。
WriteArgb32ScanLine(int, int[])将整条扫描线写入指定的扫描线索引。
WriteScanLine(int, Color[])将整条扫描线写入指定的扫描线索引。

示例

解压缩先前使用 DXT1 压缩算法压缩的 BMP 图像。

[C#]

using (var image = Image.Load("CompressedTiger.bmp"))
{
    image.Save("DecompressedTiger.bmp", new BmpOptions());
}

使用 DXT1 压缩算法压缩 BMP 图像。

[C#]

using (var image = Image.Load("Tiger.bmp"))
{
    image.Save("CompressedTiger.bmp", new BmpOptions { Compression = BitmapCompression.Dxt1 });
}

示例展示了如何使用带 Telea 算法的 Graphics Path 从图像中移除任意对象。

[C#]

var imageFilePath = "ball.png"; 
using (var image = Image.Load(imageFilePath))
{
    var pngImage = (PngImage)image;

    var mask = new GraphicsPath();
    var firstFigure = new Figure();
    firstFigure.AddShape(new EllipseShape(new RectangleF(350, 170, 570 - 350, 400 - 170)));
    mask.AddFigure(firstFigure);

    var options = new TeleaWatermarkOptions(mask);

    var result = WatermarkRemover.PaintOver(pngImage, options);

    result.Save(outputPath);
}

示例展示了如何使用 Rgb 压缩类型导出 BmpImage。

[C#]

string sourcePath = "input.png";
// 从文件加载 PNG 图像。
using (Image pngImage = Image.Load(sourcePath))
{
    // BMP 图像默认以透明度支持保存,这是通过使用 BitmapCompression.Bitfields 压缩方法实现的。
    // 要使用 Rgb 压缩方法保存 BMP 图像,应指定 Compression 属性设置为 BitmapCompression.Rgb 的 BmpOptions。
    pngImage.Save(outputPath, new BmpOptions() { Compression = BitmapCompression.Rgb });
}

示例展示了如何使用带 Content Aware fill 算法的 Graphics Path 从图像中移除任意对象。

[C#]

var imageFilePath = "ball.png"; 
using (var image = Image.Load(imageFilePath))
{
    var pngImage = (PngImage)image;

    var mask = new GraphicsPath();
    var firstFigure = new Figure();
    firstFigure.AddShape(new EllipseShape(new RectangleF(350, 170, 570 - 350, 400 - 170)));
    mask.AddFigure(firstFigure);

    var options = new ContentAwareFillWatermarkOptions(mask) 
    { 
        MaxPaintingAttempts = 4
    };

    var result = WatermarkRemover.PaintOver(pngImage, options);

    result.Save(outputPath);
}

以下示例展示了如何创建指定尺寸的 BMP 图像。

[C#]

string dir = "c:\\temp\\";

// 创建一个 100 x 100 像素的 BMP 图像。
using (Aspose.Imaging.FileFormats.Bmp.BmpImage bmpImage = new Aspose.Imaging.FileFormats.Bmp.BmpImage(100, 100))
{
    // 使用简单的线性红黑渐变填充图像。
    int width = bmpImage.Width;
    int height = bmpImage.Height;
    for (int y = 0; y < height; y++)
    {
        for (int x = 0; x < width; x++)
        {
            int hue = (255 * x) / width;
            bmpImage.SetPixel(x, y, Aspose.Imaging.Color.FromArgb(255, hue, 0, 0));
        }
    }

    using (System.IO.FileStream stream = new System.IO.FileStream(dir + "output.bmp", System.IO.FileMode.Create))
    {
        bmpImage.Save(stream);
    }
}

示例展示了如何从 Png 文件导出 BmpImage 并保留 alpha 通道,以透明度保存 Bmp 文件。

[C#]

string sourcePath = "input.png";
// 从文件加载 PNG 图像。
using (Image pngImage = Image.Load(sourcePath))
{
    // BMP 图像默认以透明度支持保存。
    // 如果您想显式指定此模式,应将 BmpOptions 的 Compression 属性设置为 BitmapCompression.Bitfields。
    // BitmapCompression.Bitfields 压缩方法是 BmpOptions 中的默认压缩方法。
    // 因此,通过以下任一方式都可以实现导出带透明度的 Bmp 图像的相同结果。
    // 使用隐式默认选项:
    pngImage.Save(outputPath);
    // 使用显式默认选项:
    pngImage.Save(outputPath, new BmpOptions());
    // 指定 BitmapCompression.Bitfields 压缩方法:
    pngImage.Save(outputPath, new BmpOptions() { Compression = BitmapCompression.Bitfields });
}

另请参见