LoadRawData

LoadRawData(Rectangle, RawDataSettings, IPartialRawDataLoader)

Carga datos sin procesar.

public void LoadRawData(Rectangle rectangle, RawDataSettings rawDataSettings, 
    IPartialRawDataLoader rawDataLoader)
ParámetroEscribeDescripción
rectangleRectangleEl rectángulo desde el que se cargan los datos sin procesar.
rawDataSettingsRawDataSettingsLa configuración de datos sin procesar que se usará para los datos cargados. Tenga en cuenta que si los datos no están en el formato especificado, se realizará la conversión de datos.
rawDataLoaderIPartialRawDataLoaderEl cargador de datos sin procesar.

Ejemplos

El siguiente ejemplo muestra cómo extraer píxeles de los datos de imagen sin procesar mediante RawDataSettings. Por ejemplo, considere un problema de contar los píxeles completamente transparentes de una imagen.

[C#]

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

    TransparentPixelRawDataCounter rawDataLoader = new TransparentPixelRawDataCounter(settings);

    // Carga píxeles para toda la imagen. Cualquier parte rectangular de la imagen se puede especificar como parámetro del método Aspose.Imaging.RasterImage.LoadRawData.
    rasterImage.LoadRawData(rasterImage.Bounds, settings, rawDataLoader);

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

// En el caso de datos sin procesar, 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 TransparentPixelRawDataCounter : IPartialRawDataLoader
{
    /// <summary>
    /// El número de píxeles completamente transparentes.
    /// </summary>
    private int count;

    /// <summary>
    /// La configuración de datos sin procesar de la imagen cargada.
    /// </summary>
    private Aspose.Imaging.RawDataSettings rawDataSettings;

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

    /// <summary>
    /// Inicializa una nueva instancia de <ver TransparentPixelRawDataCounter /> clase.
    /// </summary>
    /// <param name="settings">La configuración de datos sin procesar permite extraer componentes de color de los datos sin procesar.</param>
    public TransparentPixelRawDataCounter(Aspose.Imaging.RawDataSettings settings)
    {
        this.rawDataSettings = settings;
        this.count = 0;
    }

    /// <summary>
    /// Procesa los datos sin procesar cargados. Este método se vuelve a llamar cada vez que se carga una nueva porción de datos sin procesar.
    /// </summary>
    /// <param name="dataRectangle">El rectángulo de datos sin procesar.</param>
    /// <param name="data">Los datos sin procesar.</param>
    /// <param name="start">El punto de datos de inicio.</param>
    /// <param name="end">El punto de datos final.</param>
    public void Process(Aspose.Imaging.Rectangle dataRectangle, byte[] data, Aspose.Imaging.Point start, Aspose.Imaging.Point end)
    {
        int[] channelBits = this.rawDataSettings.PixelDataFormat.ChannelBits;

        // Aquí solo se consideran formatos simples para simplificar el código.
        // Consideremos solo imágenes con 8 bits por muestra.
        for (int i = 0; i < channelBits.Length; i++)
        {
            if (channelBits[i] != 8)
            {
                throw new System.NotSupportedException();
            }
        }

        switch (this.rawDataSettings.PixelDataFormat.PixelFormat)
        {
            case PixelFormat.Rgb:
            case PixelFormat.Bgr:
                {
                    if (channelBits.Length == 4)
                    {
                        //ARGB
                        for (int i = 0; i < data.Length; i += 4)
                        {
                            // El canal alfa se almacena en último lugar, después de los componentes de color.
                            if (data[i + 3] == 0)
                            {
                                this.count++;
                            }
                        }
                    }
                }
                break;

            case PixelFormat.Grayscale:
                {
                    if (channelBits.Length == 2)
                    {
                        // Alfa en escala de grises
                        for (int i = 0; i < data.Length; i += 2)
                        {
                            // El canal alfa se almacena en último lugar, después de los componentes de color.
                            if (data[i + 1] == 0)
                            {
                                this.count++;
                            }
                        }
                    }
                }
                break;

            default:
                throw new System.ArgumentOutOfRangeException("PixelFormat");
        }
    }

    /// <summary>
    /// Procesa los datos sin procesar cargados. Este método se vuelve a llamar cada vez que se carga una nueva porción de datos sin procesar.
    /// </summary>
    /// <param name="dataRectangle">El rectángulo de datos sin procesar.</param>
    /// <param name="data">Los datos sin procesar.</param>
    /// <param name="start">El punto de datos de inicio.</param>
    /// <param name="end">El punto de datos final.</param>
    /// <param name="loadOptions">Las opciones de carga.</param>
    public void Process(Aspose.Imaging.Rectangle dataRectangle, byte[] data, Aspose.Imaging.Point start, Aspose.Imaging.Point end, Aspose.Imaging.LoadOptions loadOptions)
    {
        this.Process(dataRectangle, data, start, end);
    }
}

Ver también


LoadRawData(Rectangle, Rectangle, RawDataSettings, IPartialRawDataLoader)

Carga datos sin procesar.

public void LoadRawData(Rectangle rectangle, Rectangle destImageBounds, 
    RawDataSettings rawDataSettings, IPartialRawDataLoader rawDataLoader)
ParámetroEscribeDescripción
rectangleRectangleEl rectángulo desde el que se cargan los datos sin procesar.
destImageBoundsRectangleLos límites de la imagen dest.
rawDataSettingsRawDataSettingsLa configuración de datos sin procesar que se usará para los datos cargados. Tenga en cuenta que si los datos no están en el formato especificado, se realizará la conversión de datos.
rawDataLoaderIPartialRawDataLoaderEl cargador de datos sin procesar.

Ver también