LoadPartialPixels

RasterImage.LoadPartialPixels method

Carica i pixel parzialmente per pacchetti.

public void LoadPartialPixels(Rectangle desiredRectangle, IPartialPixelLoader pixelLoader)
ParametroTipoDescrizione
desiredRectangleRectangleIl rettangolo desiderato.
pixelLoaderIPartialPixelLoaderIl caricatore di pixel.

Esempi

L’esempio seguente mostra come caricare ed elaborare i pixel di un’immagine raster utilizzando il proprio processore parziale. Si consideri ad esempio un problema di conteggio dei pixel completamente trasparenti di un’immagine. Per contare trasparenti utilizzando il meccanismo di caricamento parziale, viene introdotta una classe separata TransparentPixelCounter che 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;

    // Crea un'istanza di Aspose.Imaging.IPartialPixelLoader e passala ad Aspose.Imaging.RasterImage.LoadPartialPixels
    TransparentPixelCounter counter = new TransparentPixelCounter();

    // Carica pixel per l'intera immagine. Qualsiasi parte rettangolare dell'immagine può essere specificata come primo parametro del metodo 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);
}

// Il contatore potrebbe assomigliare a questo:
/// <summary>
/// Conta il numero di pixel completamente trasparenti con valore del canale alfa pari a 0.
/// </summary>
private class TransparentPixelCounter : IPartialPixelLoader
{
    /// <summary>
    /// Il numero di pixel completamente trasparenti.
    /// </summary>
    private int count;

    /// <summary>
    /// Ottiene il numero di pixel completamente trasparenti.
    /// </summary>
    public int Count
    {
        get { return this.count; }
    }

    /// <summary>
    /// Elabora i pixel caricati. Questo metodo viene richiamato ogni volta che viene caricata una nuova porzione di pixel.
    /// </summary>
    /// <param name="pixelsRectangle">Il rettangolo dei pixel.</param>
    /// <param name="pixels">I pixel ARGB a 32 bit.</param>
    /// <param name="start">Il punto iniziale dei pixel.</param>
    /// <param name="end">Il punto finale dei pixel.</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++;
            }
        }
    }
}

Guarda anche