PremultiplyComponents

RasterImage.PremultiplyComponents property

Получает или задает значение, указывающее, должны ли компоненты изображения предварительно умножаться.

public virtual bool PremultiplyComponents { get; set; }

Стоимость имущества

истинный если компоненты изображения должны быть предварительно умножены; в противном случае,ЛОЖЬ .

Примеры

В следующем примере создается новое растровое изображение, сохраняются указанные полупрозрачные пиксели, затем загружаются эти пиксели и получаются окончательные цвета в форме предварительного умножения.

[C#]

int imageWidth = 3;
int imageHeight = 2;

Aspose.Imaging.Color[] colors = new Aspose.Imaging.Color[]
{
    Aspose.Imaging.Color.FromArgb(127, 255, 0, 0),
    Aspose.Imaging.Color.FromArgb(127, 0, 255, 0),
    Aspose.Imaging.Color.FromArgb(127, 0, 0, 255),
    Aspose.Imaging.Color.FromArgb(127, 255, 255, 0),
    Aspose.Imaging.Color.FromArgb(127, 255, 0, 255),
    Aspose.Imaging.Color.FromArgb(127, 0, 255, 255),
};

Aspose.Imaging.ImageOptions.PngOptions createOptions = new Aspose.Imaging.ImageOptions.PngOptions();
createOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream(), true);
createOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;

using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Create(createOptions, imageWidth, imageHeight))
{
    Aspose.Imaging.RasterImage rasterImage = (Aspose.Imaging.RasterImage)image;

    // Сохраняем пиксели для всего изображения.
    rasterImage.SavePixels(rasterImage.Bounds, colors);

    // Пиксели сохраняются в исходном изображении в неумноженном виде.
    // Необходимо явно указать соответствующую опцию, чтобы получить предварительно умноженные компоненты цвета.
    // Предумноженные компоненты цвета рассчитываются по формулам:
    // red = original_red * alpha/255;
    // зеленый = original_green * альфа / 255;
    // blue = original_blue * alpha/255;
    rasterImage.PremultiplyComponents = true;
    Aspose.Imaging.Color[] premultipliedColors = rasterImage.LoadPixels(rasterImage.Bounds);

    for (int i = 0; i < colors.Length; i++)
    {
        System.Console.WriteLine("Original color: {0}", colors[i].ToString());
        System.Console.WriteLine("Premultiplied color: {0}", premultipliedColors[i].ToString());
    }
}

Смотрите также