Contents

premultiply(channelOrdering:)

Transforms an unsigned 16-bit ARGB or RGBA pixel buffer in-place from nonpremultiplied alpha format to premultiplied alpha format.

Declaration

func premultiply(channelOrdering: vImage.ChannelOrdering)

Parameters

  • channelOrdering:

    The channel ordering of the source buffer.

Discussion

This function multiplies the color values in each pixel`self` by the corresponding alpha value and copies the alpha value to the destination unchanged. The function treats the values 0 ... UInt16.max in the pixel buffer as the values 0 ... 1.

For example, the following code multiplies the RGB values [UInt16.max / 8, UInt16.max / 4, UInt16.max / 2] by the alpha value UInt16.max / 2:

let src = vImage.PixelBuffer<vImage.Interleaved16Ux4>(
    pixelValues: [UInt16.max / 2,
                  UInt16.max / 8, UInt16.max / 4, UInt16.max / 2],
    size: vImage.Size(width: 1, height: 1))

src.premultiply(channelOrdering: .ARGB)

// Prints "[32767, 4095, 8191, 16383]
//  = [UInt16.max / 2, UInt16.max / 16, UInt16.max / 8, UInt16.max / 4]
print(src.array)

See Also

Premultiply