LoadPartialPixels

RasterImage.LoadPartialPixels method

Carga píxeles parcialmente por paquetes.

public void LoadPartialPixels(Rectangle desiredRectangle, IPartialPixelLoader pixelLoader)
ParámetroEscribeDescripción
desiredRectangleRectangleEl rectángulo deseado.
pixelLoaderIPartialPixelLoaderEl cargador de píxeles.

Ejemplos

El siguiente ejemplo muestra cómo cargar y procesar píxeles de una imagen ráster utilizando su propio procesador parcial. Por ejemplo, considere un problema de contar los píxeles completamente transparentes de una imagen. Con el fin de contar transparente utilizando el mecanismo de carga parcial, se introduce una clase separada TransparentPixelCounter que implementa Aspose.Imaging.IPartialPixelLoader.

[C#]

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

    // Cree una instancia de Aspose.Imaging.IPartialPixelLoader y pásela a Aspose.Imaging.RasterImage.LoadPartialPixels
    TransparentPixelCounter counter = new TransparentPixelCounter();

    // Carga píxeles para toda la imagen. Cualquier parte rectangular de la imagen se puede especificar como el primer parámetro del método Aspose.Imaging.RasterImage.LoadPartialPixels.
    rasterImage.LoadPartialPixels(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);
}

// El contador puede verse así:
/// <summary>
/// Cuenta el número de píxeles completamente transparentes con un valor de canal alfa de 0.
/// </summary>
private class TransparentPixelCounter : IPartialPixelLoader
{
    /// <summary>
    /// El número de píxeles completamente transparentes.
    /// </summary>
    private int count;

    /// <summary>
    /// Obtiene el número de píxeles completamente transparentes.
    /// </summary>
    public int Count
    {
        get { return this.count; }
    }

    /// <summary>
    /// Procesa los píxeles cargados. Este método se vuelve a llamar cada vez que se carga una nueva porción de píxeles.
    /// </summary>
    /// <param name="pixelsRectangle">El rectángulo de píxeles.</param>
    /// <param name="pixels">Los píxeles ARGB de 32 bits.</param>
    /// <param name="start">El punto de píxeles de inicio.</param>
    /// <param name="end">El punto final de píxeles.</param>
    public void Process(Aspose.Imaging.Rectangle pixelsRectangle, Aspose.Imaging.Color[] pixels, Aspose.Imaging.Point start, Aspose.Imaging.Point end)
    {
        foreach (Color pixel in pixels)
        {
            if (pixel.A == 0)
            {
                this.count++;
            }
        }
    }
}

Ver también