ImageBitmap
interface ImageBitmap
androidx.compose.ui.graphics.ImageBitmap |
Graphics object that represents a 2 dimensional array of pixel information represented as ARGB values
Summary
Public methods | |
---|---|
abstract Unit |
Builds caches associated with the ImageBitmap that are used for drawing it. |
abstract Unit |
readPixels(buffer: IntArray, startX: Int = 0, startY: Int = 0, width: Int = this.width, height: Int = this.height, bufferOffset: Int = 0, stride: Int = width) Copies the pixel data within the ImageBitmap into the given array. |
Extension functions | ||||
---|---|---|---|---|
From androidx.compose.ui.graphics
|
Properties | |
---|---|
abstract ColorSpace |
ColorSpace the Image renders in |
abstract ImageBitmapConfig |
Returns the current configuration of this Image, either: |
abstract Boolean |
Determines whether or not the ImageBitmap contains an alpha channel |
abstract Int |
The number of image pixels along the ImageBitmap's vertical axis. |
abstract Int |
The number of image pixels along the ImageBitmap's horizontal axis. |
Public methods
prepareToDraw
abstract fun prepareToDraw(): Unit
Builds caches associated with the ImageBitmap that are used for drawing it. This method can be used as a signal to upload textures to the GPU to eventually be rendered
readPixels
abstract fun readPixels(
buffer: IntArray,
startX: Int = 0,
startY: Int = 0,
width: Int = this.width,
height: Int = this.height,
bufferOffset: Int = 0,
stride: Int = width
): Unit
Copies the pixel data within the ImageBitmap into the given array. Each value is represented as ARGB values packed into an Int. The stride parameter allows the caller to allow for gaps in the returned pixels array between rows. For normal packed, results, the stride value is equivalent to the width of the ImageBitmap. The returned colors are non-premultiplied ARGB values in the ColorSpaces.Srgb color space.
Note this method can block so it is recommended to not invoke this method in performance critical code paths
import androidx.compose.ui.graphics.PixelMap 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) } }
Parameters | |
---|---|
buffer: IntArray | 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, that is the 2 dimensional area of the section of the ImageBitmap to be queried. |
startX: Int = 0 | The x-coordinate of the first pixel to read from the ImageBitmap |
startY: Int = 0 | The y-coordinate of the first pixel to read from the ImageBitmap |
width: Int = this.width | The number of pixels to read from each row |
height: Int = this.height | The number of rows to read |
bufferOffset: Int = 0 | The first index to write into the buffer array, this defaults to 0 |
stride: Int = width | The number of entries in buffer to skip between rows (must be >= width |