Class
Common
class PixelMap(
    val buffer: IntArray,
    val width: Int,
    val height: Int,
    val bufferOffset: Int,
    val stride: Int,
)

Result of a pixel read operation. This contains the ImageBitmap pixel information represented as a 1 dimensional array of values that supports queries of pixel values based on the 2 dimensional coordinates of the corresponding ImageBitmap this was obtained from

Parameters

buffer IntArray where pixel information is stored as an ARGB value packed into an Int
bufferOffset first index in the buffer where pixel information for the ImageBitmap is stored
width Width of the subsection of the ImageBitmap this buffer represents
height Height of the subsection of the ImageBitmap this buffer represents
stride Number of entries to skip between rows

Functions

operator fun get(@IntRange(from = 0) x: Int, @IntRange(from = 0) y: Int): Color

Obtain the color of the pixel at the given coordinate.

Parameters

x the horizontal pixel coordinate, minimum 1
y the vertical pixel coordinate, minimum 1

Code Examples

ImageBitmapReadPixelsSample

/**
 * [ImageBitmap.readPixels] sample that shows how to create a consumer defined IntArray to store
 * pixel information and create a PixelMap for querying information within the buffer
 */
fun ImageBitmapReadPixelsSample() {
    val imageBitmap = createImageBitmap()
    val buffer = IntArray(20 * 10)
    imageBitmap.readPixels(buffer = buffer, startX = 8, startY = 9, width = 20, height = 10)
    val pixelmap = PixelMap(buffer = buffer, width = 20, height = 10, stride = 20, bufferOffset = 0)
    // create a histogram to count the number of occurrences of a color within the specified
    // subsection of the provided ImageBitmap
    val histogram = HashMap<Color, Int>()
    for (x in 0 until pixelmap.width) {
        for (y in 0 until pixelmap.height) {
            val color = pixelmap[x, y]
            val colorCount = histogram[color] ?: 0
            histogram[color] = (colorCount + 1)
        }
    }
}