toPixelMap
Function
Common
fun ImageBitmap.toPixelMap(
startX: Int = 0,
startY: Int = 0,
width: Int = this.width,
height: Int = this.height,
buffer: IntArray = IntArray(width * height),
bufferOffset: Int = 0,
stride: Int = width,
): PixelMap
Convenience method to extract pixel information from the given ImageBitmap into a PixelMap
that
supports for querying pixel information based on
Note this method can block so it is recommended to not invoke this method in performance critical code paths
Parameters
startX | The x-coordinate of the first pixel to read from the ImageBitmap |
startY | The y-coordinate of the first pixel to read from the ImageBitmap |
width | The number of pixels to read from each row |
height | The number of rows to read |
buffer | The array to store the ImageBitmap 's colors. By default this allocates an IntArray large enough to store all the pixel information. Consumers of this API are advised to use the smallest IntArray necessary to extract relevant pixel information |
bufferOffset | The first index to write into the buffer array, this defaults to 0 |
stride | The number of entries in buffer to skip between rows (must be >= width |
Code Examples
ImageBitmapToPixelMapSample
/**
* Sample showing how to obtain a [PixelMap] to query pixel information from an underlying
* [ImageBitmap]
*/
fun ImageBitmapToPixelMapSample() {
val imageBitmap = createImageBitmap()
// Sample a 3 by 2 subsection of the given ImageBitmap
// starting at the coordinate (48, 49)
val pixelmap = imageBitmap.toPixelMap(startX = 48, startY = 49, width = 3, height = 2)
// 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)
}
}
}