LoadPartialPixels

RasterImage.LoadPartialPixels method

Lädt Pixel teilweise nach Paketen.

public void LoadPartialPixels(Rectangle desiredRectangle, IPartialPixelLoader pixelLoader)
ParameterTypBeschreibung
desiredRectangleRectangleDas gewünschte Rechteck.
pixelLoaderIPartialPixelLoaderDer Pixelloader.

Beispiele

Das folgende Beispiel zeigt, wie Sie Pixel eines Rasterbildes mit Ihrem eigenen Teilprozessor laden und verarbeiten. Betrachten wir zum Beispiel ein Problem des Zählens von vollständig transparenten Pixeln eines Bildes. Um transparent zu zählen, indem der Teillademechanismus verwendet wird, wird eine separate Klasse TransparentPixelCounter eingeführt, die Aspose.Imaging.IPartialPixelLoader implementiert.

[C#]

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

    // Eine Instanz von Aspose.Imaging.IPartialPixelLoader erstellen und an Aspose.Imaging.RasterImage.LoadPartialPixels übergeben
    TransparentPixelCounter counter = new TransparentPixelCounter();

    // Pixel für das ganze Bild laden. Jeder rechteckige Teil des Bildes kann als erster Parameter der Aspose.Imaging.RasterImage.LoadPartialPixels-Methode angegeben werden.
    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);
}

// Der Zähler könnte so aussehen:
/// <summary>
/// Zählt die Anzahl der vollständig transparenten Pixel mit einem Alphakanalwert von 0.
/// </summary>
private class TransparentPixelCounter : IPartialPixelLoader
{
    /// <summary>
    /// Die Anzahl der vollständig transparenten Pixel.
    /// </summary>
    private int count;

    /// <summary>
    /// Ruft die Anzahl der vollständig transparenten Pixel ab.
    /// </summary>
    public int Count
    {
        get { return this.count; }
    }

    /// <summary>
    /// Verarbeitet die geladenen Pixel. Diese Methode wird jedes Mal aufgerufen, wenn ein neuer Teil von Pixeln geladen wird.
    /// </summary>
    /// <param name="pixelsRectangle">Das Pixelrechteck.</param>
    /// <param name="pixels">Die 32-Bit-ARGB-Pixel.</param>
    /// <param name="start">Der Startpixelpunkt.</param>
    /// <param name="end">Der Endpixelpunkt.</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++;
            }
        }
    }
}

Siehe auch