LoadPartialArgb32Pixels

RasterImage.LoadPartialArgb32Pixels method

部分按包加载 32 位 ARGB 像素。

public void LoadPartialArgb32Pixels(Rectangle rectangle, 
    IPartialArgb32PixelLoader partialPixelLoader)
范围类型描述
rectangleRectangle所需的矩形。
partialPixelLoaderIPartialArgb32PixelLoader32 位 ARGB 像素加载器。

例子

以下示例显示如何使用您自己的部分处理器加载和处理光栅图像的像素。例如,考虑计算图像的完全透明像素的问题。为了使用部分加载机制计算透明像素,引入了实现 Aspose.Imaging.IPartialArgb32PixelLoader 的单独类 TransparentArgb32PixelCounter。

[C#]

using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Load(@"c:\temp\alpha.png"))
{
    Aspose.Imaging.RasterImage rasterImage = (Aspose.Imaging.RasterImage)image;

    // 创建 Aspose.Imaging.IPartialArgb32PixelLoader 的实例并将其传递给 Aspose.Imaging.RasterImage.LoadPartialArgb32Pixels
    TransparentArgb32PixelCounter counter = new TransparentArgb32PixelCounter();

    // 加载整个图像的像素。图像的任何矩形部分都可以指定为 Aspose.Imaging.RasterImage.LoadPartialArgb32Pixels 方法的第一个参数。
    rasterImage.LoadPartialArgb32Pixels(rasterImage.Bounds, counter);

    System.Console.WriteLine("The number of fully transparent pixels is {0}", counter.Count);
    System.Console.WriteLine("The total number of pixels is {0}", image.Width * image.Height);
}

// 计数器可能如下所示:        
/// <summary>
/// 计算 alpha 通道值为 0 的完全透明像素的数量。
/// </summary>
private class TransparentArgb32PixelCounter : IPartialArgb32PixelLoader
{
    /// <summary>
    /// 完全透明像素的数量。
    /// </summary>
    private int count;

    /// <summary>
    /// 获取完全透明像素的数量。
    /// </summary>
    public int Count
    {
        get { return this.count; }
    }

    /// <summary>
    /// 处理加载的像素。每次加载新的像素部分时都会回调此方法。
    /// </summary>
    /// <param name="pixelsRectangle">像素矩形。</param>
    /// <param name="pixels">32 位 ARGB 像素。</param>
    /// <param name="start">起始像素点。</param>
    /// <param name="end">结束像素点。</param>
    public void Process(Aspose.Imaging.Rectangle pixelsRectangle, int[] pixels, Aspose.Imaging.Point start, Aspose.Imaging.Point end)
    {
        foreach (int pixel in pixels)
        {
            int alpha = (pixel >> 24) & 0xff;
            if (alpha == 0)
            {
                this.count++;
            }
        }
    }
}

也可以看看