blob: df3bd921dca2c400ca780bd7f8212b7a3b478c21 [file] [log] [blame]
<html devsite="true">
<head>
<title>ImageBitmap</title>
{% setvar book_path %}/reference/kotlin/androidx/_book.yaml{% endsetvar %}
{% include "_shared/_reference-head-tags.html" %}
</head>
<body>
<div itemscope="" itemtype="http://developers.google.com/ReferenceObject">
<meta itemprop="name" content="ImageBitmap">
<meta itemprop="path" content="androidx.compose.ui.graphics">
<meta itemprop="property" content="prepareToDraw()">
<meta itemprop="property" content="readPixels(kotlin.IntArray,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)">
<meta itemprop="property" content="colorSpace()">
<meta itemprop="property" content="config()">
<meta itemprop="property" content="hasAlpha()">
<meta itemprop="property" content="height()">
<meta itemprop="property" content="width()">
<meta itemprop="property" content="(androidx.compose.ui.graphics.ImageBitmap).asAndroidBitmap()">
<meta itemprop="property" content="(androidx.compose.ui.graphics.ImageBitmap).toPixelMap(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.IntArray,kotlin.Int,kotlin.Int)">
<meta itemprop="language" content="KOTLIN">
</div>
<div id="header-block">
<div>
<h1>ImageBitmap</h1>
</div>
<div id="metadata-info-block">
<div id="source-link"><a href="https://cs.android.com/search?q=file:androidx/compose/ui/graphics/ImageBitmap.kt+class:androidx.compose.ui.graphics.ImageBitmap&amp;ss=androidx/platform/frameworks/support" class="external">View Source</a></div>
</div>
</div>
<div id="refdoc-switcher-placeholder"></div>
<devsite-select id="platform" label="Select a platform"><select multiple="multiple"><option selected="selected" value="platform-Common/All">Common/All</option><option selected="selected" value="platform-Android/JVM">Android/JVM</option></select></devsite-select >
<devsite-filter select-el-container-id="platform">
<div>
<ul class="list" style="list-style: none; padding-left: 0">
<li>
<div class="kotlin-platform" data-title="Common/All">Cmn</div>
<!--platform-Common/All-->
<pre>interface <a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a></pre>
</li>
</ul>
</div>
</devsite-filter >
<hr>
<p>Graphics object that represents a 2 dimensional array of pixel information represented as ARGB values</p>
<h2>Summary</h2>
<div class="devsite-table-wrapper">
<table class="responsive">
<colgroup>
<col width="40%">
<col>
</colgroup>
<thead>
<tr>
<th colspan="100%"><h3>Nested types</h3></th>
</tr>
</thead>
<tbody class="list">
<tr>
<td>
<div><code>object <a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.Companion.html">ImageBitmap.Companion</a></code></div>
<p>Provide an empty companion object to hang platform-specific companion extensions onto.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="devsite-table-wrapper">
<devsite-filter select-el-container-id="platform">
<table class="fixed">
<colgroup>
<col width="35%">
<col width="58%">
<col>
</colgroup>
<thead>
<tr>
<th colspan="100%"><h3>Public functions</h3></th>
</tr>
</thead>
<tbody class="list">
<tr>
<td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a></code></td>
<td>
<div><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#prepareToDraw()">prepareToDraw</a>()</code></div>
<p>Builds caches associated with the ImageBitmap that are used for drawing it.</p>
</td>
<td>
<div class="kotlin-platform" data-title="Common/All">Cmn</div>
<!--platform-Common/All--></td>
</tr>
<tr>
<td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a></code></td>
<td>
<div><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#readPixels(kotlin.IntArray,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)">readPixels</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;buffer:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html">IntArray</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;startX:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;startY:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;bufferOffset:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;stride:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a><br>)</code></div>
<p>Copies the pixel data within the ImageBitmap into the given array.</p>
</td>
<td>
<div class="kotlin-platform" data-title="Common/All">Cmn</div>
<!--platform-Common/All--></td>
</tr>
</tbody>
</table>
</devsite-filter >
</div>
<div class="devsite-table-wrapper">
<devsite-filter select-el-container-id="platform">
<table class="fixed">
<colgroup>
<col width="35%">
<col width="58%">
<col>
</colgroup>
<thead>
<tr>
<th colspan="100%"><h3>Public properties</h3></th>
</tr>
</thead>
<tbody class="list">
<tr>
<td><code><a href="/reference/kotlin/androidx/compose/ui/graphics/colorspace/ColorSpace.html">ColorSpace</a></code></td>
<td>
<div><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#colorSpace()">colorSpace</a></code></div>
<p>ColorSpace the Image renders in</p>
</td>
<td>
<div class="kotlin-platform" data-title="Common/All">Cmn</div>
<!--platform-Common/All--></td>
</tr>
<tr>
<td><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmapConfig.html">ImageBitmapConfig</a></code></td>
<td>
<div><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#config()">config</a></code></div>
<p>Returns the current configuration of this Image, either:</p>
</td>
<td>
<div class="kotlin-platform" data-title="Common/All">Cmn</div>
<!--platform-Common/All--></td>
</tr>
<tr>
<td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></code></td>
<td>
<div><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#hasAlpha()">hasAlpha</a></code></div>
<p>Determines whether or not the ImageBitmap contains an alpha channel</p>
</td>
<td>
<div class="kotlin-platform" data-title="Common/All">Cmn</div>
<!--platform-Common/All--></td>
</tr>
<tr>
<td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></code></td>
<td>
<div><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#height()">height</a></code></div>
<p>The number of image pixels along the ImageBitmap's vertical axis.</p>
</td>
<td>
<div class="kotlin-platform" data-title="Common/All">Cmn</div>
<!--platform-Common/All--></td>
</tr>
<tr>
<td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></code></td>
<td>
<div><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#width()">width</a></code></div>
<p>The number of image pixels along the ImageBitmap's horizontal axis.</p>
</td>
<td>
<div class="kotlin-platform" data-title="Common/All">Cmn</div>
<!--platform-Common/All--></td>
</tr>
</tbody>
</table>
</devsite-filter >
</div>
<div class="devsite-table-wrapper">
<devsite-filter select-el-container-id="platform">
<table class="fixed">
<colgroup>
<col width="35%">
<col width="58%">
<col>
</colgroup>
<thead>
<tr>
<th colspan="100%"><h3>Extension functions</h3></th>
</tr>
</thead>
<tbody class="list">
<tr>
<td><code><a href="https://developer.android.com/reference/android/graphics/Bitmap.html">Bitmap</a></code></td>
<td>
<div><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a>.<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#(androidx.compose.ui.graphics.ImageBitmap).asAndroidBitmap()">asAndroidBitmap</a>()</code></div>
</td>
<td>
<div class="kotlin-platform" data-title="Android/JVM"><span class="material-symbols-outlined">android</span></div>
<!--platform-Android/JVM--></td>
</tr>
<tr>
<td><code><a href="/reference/kotlin/androidx/compose/ui/graphics/PixelMap.html">PixelMap</a></code></td>
<td>
<div><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a>.<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#(androidx.compose.ui.graphics.ImageBitmap).toPixelMap(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.IntArray,kotlin.Int,kotlin.Int)">toPixelMap</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;startX:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;startY:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;buffer:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html">IntArray</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;bufferOffset:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;stride:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a><br>)</code></div>
<p>Convenience method to extract pixel information from the given ImageBitmap into a <code><a href="/reference/kotlin/androidx/compose/ui/graphics/PixelMap.html">PixelMap</a></code> that supports for querying pixel information based on</p>
</td>
<td>
<div class="kotlin-platform" data-title="Common/All">Cmn</div>
<!--platform-Common/All--></td>
</tr>
</tbody>
</table>
</devsite-filter >
</div>
<devsite-filter select-el-container-id="platform">
<div class="list">
<h2 data-title="platform-Common/All">Public functions
<!--platform-Common/All--></h2>
<div class="api-item"><a name="prepareToDraw--"></a><a name="preparetodraw"></a>
<div class="api-name-block">
<div>
<h3 id="prepareToDraw()">prepareToDraw</h3>
</div>
<div class="api-name-platform-and-metadata">
<div class="api-name-platform-icons"><span class="kotlin-platform" data-title="Common/All">Cmn</span>
<!--platform-Common/All--></div>
</div>
</div>
<pre class="api-signature no-pretty-print">fun&nbsp;<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#prepareToDraw()">prepareToDraw</a>():&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a></pre>
<p>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</p>
</div>
<div class="api-item"><a name="readPixels(kotlin.IntArray, kotlin.Int, kotlin.Int, kotlin.Int, kotlin.Int, kotlin.Int, kotlin.Int)"></a><a name="readPixels-kotlin.IntArray-kotlin.Int-kotlin.Int-kotlin.Int-kotlin.Int-kotlin.Int-kotlin.Int-"></a><a name="readpixels"></a>
<div class="api-name-block">
<div>
<h3 id="readPixels(kotlin.IntArray,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)">readPixels</h3>
</div>
<div class="api-name-platform-and-metadata">
<div class="api-name-platform-icons"><span class="kotlin-platform" data-title="Common/All">Cmn</span>
<!--platform-Common/All--></div>
</div>
</div>
<pre class="api-signature no-pretty-print">fun&nbsp;<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#readPixels(kotlin.IntArray,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)">readPixels</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;buffer:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html">IntArray</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;startX:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = 0,<br>&nbsp;&nbsp;&nbsp;&nbsp;startY:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = 0,<br>&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = this.width,<br>&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = this.height,<br>&nbsp;&nbsp;&nbsp;&nbsp;bufferOffset:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = 0,<br>&nbsp;&nbsp;&nbsp;&nbsp;stride:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = width<br>):&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a></pre>
<p>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 <code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a></code>. The returned colors are non-premultiplied ARGB values in the <code><a href="/reference/kotlin/androidx/compose/ui/graphics/colorspace/ColorSpaces.html#Srgb()">ColorSpaces.Srgb</a></code> color space.</p>
<p>Note this method can block so it is recommended to not invoke this method in performance critical code paths</p>
<pre class="prettyprint lang-kotlin">
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ImageBitmap
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&lt;Color, Int&gt;()
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)
}
}</pre>
<div class="devsite-table-wrapper">
<table class="responsive">
<colgroup>
<col width="40%">
<col>
</colgroup>
<thead>
<tr>
<th colspan="100%">Parameters</th>
</tr>
</thead>
<tbody class="list">
<tr>
<td><code>buffer:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html">IntArray</a></code></td>
<td>
<p>The array to store the <code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a></code>'s colors. By default this allocates an <code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html">IntArray</a></code> large enough to store all the pixel information. Consumers of this API are advised to use the smallest <code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html">IntArray</a></code> necessary to extract relevant pixel information, that is the 2 dimensional area of the section of the <code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a></code> to be queried.</p>
</td>
</tr>
<tr>
<td><code>startX:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = 0</code></td>
<td>
<p>The x-coordinate of the first pixel to read from the <code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a></code></p>
</td>
</tr>
<tr>
<td><code>startY:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = 0</code></td>
<td>
<p>The y-coordinate of the first pixel to read from the <code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a></code></p>
</td>
</tr>
<tr>
<td><code>width:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = this.width</code></td>
<td>
<p>The number of pixels to read from each row</p>
</td>
</tr>
<tr>
<td><code>height:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = this.height</code></td>
<td>
<p>The number of rows to read</p>
</td>
</tr>
<tr>
<td><code>bufferOffset:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = 0</code></td>
<td>
<p>The first index to write into the buffer array, this defaults to 0</p>
</td>
</tr>
<tr>
<td><code>stride:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = width</code></td>
<td>
<p>The number of entries in <code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#readPixels(kotlin.IntArray,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)">buffer</a></code> to skip between rows (must be >= <code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#readPixels(kotlin.IntArray,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)">width</a></code></p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</devsite-filter >
<devsite-filter select-el-container-id="platform">
<div class="list">
<h2 data-title="platform-Common/All">Public properties
<!--platform-Common/All--></h2>
<div class="api-item"><a name="getColorSpace()"></a><a name="setColorSpace()"></a><a name="getColorSpace--"></a><a name="setColorSpace--"></a>
<div class="api-name-block">
<div>
<h3 id="colorSpace()">colorSpace</h3>
</div>
<div class="api-name-platform-and-metadata">
<div class="api-name-platform-icons"><span class="kotlin-platform" data-title="Common/All">Cmn</span>
<!--platform-Common/All--></div>
</div>
</div>
<pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#colorSpace()">colorSpace</a>:&nbsp;<a href="/reference/kotlin/androidx/compose/ui/graphics/colorspace/ColorSpace.html">ColorSpace</a></pre>
<p>ColorSpace the Image renders in</p>
</div>
<div class="api-item"><a name="getConfig()"></a><a name="setConfig()"></a><a name="getConfig--"></a><a name="setConfig--"></a>
<div class="api-name-block">
<div>
<h3 id="config()">config</h3>
</div>
<div class="api-name-platform-and-metadata">
<div class="api-name-platform-icons"><span class="kotlin-platform" data-title="Common/All">Cmn</span>
<!--platform-Common/All--></div>
</div>
</div>
<pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#config()">config</a>:&nbsp;<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmapConfig.html">ImageBitmapConfig</a></pre>
<p>Returns the current configuration of this Image, either:</p>
<div class="devsite-table-wrapper">
<table class="responsive">
<colgroup>
<col width="40%">
<col>
</colgroup>
<thead>
<tr>
<th colspan="100%">See also</th>
</tr>
</thead>
<tbody class="list">
<tr>
<td><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmapConfig.html#Argb8888()">Argb8888</a></code></td>
<td></td>
</tr>
<tr>
<td><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmapConfig.html#Rgb565()">Rgb565</a></code></td>
<td></td>
</tr>
<tr>
<td><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmapConfig.html#Alpha8()">Alpha8</a></code></td>
<td></td>
</tr>
<tr>
<td><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmapConfig.html#Gpu()">Gpu</a></code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="api-item"><a name="getHasAlpha()"></a><a name="setHasAlpha()"></a><a name="getHasAlpha--"></a><a name="setHasAlpha--"></a>
<div class="api-name-block">
<div>
<h3 id="hasAlpha()">hasAlpha</h3>
</div>
<div class="api-name-platform-and-metadata">
<div class="api-name-platform-icons"><span class="kotlin-platform" data-title="Common/All">Cmn</span>
<!--platform-Common/All--></div>
</div>
</div>
<pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#hasAlpha()">hasAlpha</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></pre>
<p>Determines whether or not the ImageBitmap contains an alpha channel</p>
</div>
<div class="api-item"><a name="getHeight()"></a><a name="setHeight()"></a><a name="getHeight--"></a><a name="setHeight--"></a>
<div class="api-name-block">
<div>
<h3 id="height()">height</h3>
</div>
<div class="api-name-platform-and-metadata">
<div class="api-name-platform-icons"><span class="kotlin-platform" data-title="Common/All">Cmn</span>
<!--platform-Common/All--></div>
</div>
</div>
<pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#height()">height</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></pre>
<p>The number of image pixels along the ImageBitmap's vertical axis.</p>
</div>
<div class="api-item"><a name="getWidth()"></a><a name="setWidth()"></a><a name="getWidth--"></a><a name="setWidth--"></a>
<div class="api-name-block">
<div>
<h3 id="width()">width</h3>
</div>
<div class="api-name-platform-and-metadata">
<div class="api-name-platform-icons"><span class="kotlin-platform" data-title="Common/All">Cmn</span>
<!--platform-Common/All--></div>
</div>
</div>
<pre class="api-signature no-pretty-print">val&nbsp;<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#width()">width</a>:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></pre>
<p>The number of image pixels along the ImageBitmap's horizontal axis.</p>
</div>
</div>
</devsite-filter >
<devsite-filter select-el-container-id="platform">
<div class="list">
<h2 data-title="platform-Android/JVM, platform-Common/All">Extension functions
<!--platform-Android/JVM, platform-Common/All--></h2>
<div class="api-item"><a name="-androidx.compose.ui.graphics.ImageBitmap-.asAndroidBitmap--"></a><a name="asandroidbitmap"></a>
<div class="api-name-block">
<div>
<h3 id="(androidx.compose.ui.graphics.ImageBitmap).asAndroidBitmap()">asAndroidBitmap</h3>
</div>
<div class="api-name-platform-and-metadata">
<div class="api-name-platform-icons"><span class="kotlin-platform" data-title="Android/JVM"><span class="material-symbols-outlined">android</span></span>
<!--platform-Android/JVM--></div>
</div>
</div>
<pre class="api-signature no-pretty-print">fun&nbsp;<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a>.<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#(androidx.compose.ui.graphics.ImageBitmap).asAndroidBitmap()">asAndroidBitmap</a>():&nbsp;<a href="https://developer.android.com/reference/android/graphics/Bitmap.html">Bitmap</a></pre>
<div class="devsite-table-wrapper">
<table class="responsive">
<colgroup>
<col width="40%">
<col>
</colgroup>
<thead>
<tr>
<th colspan="100%">Throws</th>
</tr>
</thead>
<tbody class="list">
<tr>
<td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unsupported-operation-exception/index.html">kotlin.UnsupportedOperationException</a></code></td>
<td>
<p>if this <code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a></code> is not backed by an android.graphics.Bitmap</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="api-item"><a name="(androidx.compose.ui.graphics.ImageBitmap).toPixelMap(kotlin.Int, kotlin.Int, kotlin.Int, kotlin.Int, kotlin.IntArray, kotlin.Int, kotlin.Int)"></a><a name="-androidx.compose.ui.graphics.ImageBitmap-.toPixelMap-kotlin.Int-kotlin.Int-kotlin.Int-kotlin.Int-kotlin.IntArray-kotlin.Int-kotlin.Int-"></a><a name="topixelmap"></a>
<div class="api-name-block">
<div>
<h3 id="(androidx.compose.ui.graphics.ImageBitmap).toPixelMap(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.IntArray,kotlin.Int,kotlin.Int)">toPixelMap</h3>
</div>
<div class="api-name-platform-and-metadata">
<div class="api-name-platform-icons"><span class="kotlin-platform" data-title="Common/All">Cmn</span>
<!--platform-Common/All--></div>
</div>
</div>
<pre class="api-signature no-pretty-print">fun&nbsp;<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a>.<a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#(androidx.compose.ui.graphics.ImageBitmap).toPixelMap(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.IntArray,kotlin.Int,kotlin.Int)">toPixelMap</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;startX:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = 0,<br>&nbsp;&nbsp;&nbsp;&nbsp;startY:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = 0,<br>&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = this.width,<br>&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = this.height,<br>&nbsp;&nbsp;&nbsp;&nbsp;buffer:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html">IntArray</a> = IntArray(width * height),<br>&nbsp;&nbsp;&nbsp;&nbsp;bufferOffset:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = 0,<br>&nbsp;&nbsp;&nbsp;&nbsp;stride:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = width<br>):&nbsp;<a href="/reference/kotlin/androidx/compose/ui/graphics/PixelMap.html">PixelMap</a></pre>
<p>Convenience method to extract pixel information from the given ImageBitmap into a <code><a href="/reference/kotlin/androidx/compose/ui/graphics/PixelMap.html">PixelMap</a></code> that supports for querying pixel information based on</p>
<p>Note this method can block so it is recommended to not invoke this method in performance critical code paths</p>
<pre class="prettyprint lang-kotlin">
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.PixelMap
import androidx.compose.ui.graphics.toPixelMap
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&lt;Color, Int&gt;()
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)
}
}</pre>
<div class="devsite-table-wrapper">
<table class="responsive">
<colgroup>
<col width="40%">
<col>
</colgroup>
<thead>
<tr>
<th colspan="100%">Parameters</th>
</tr>
</thead>
<tbody class="list">
<tr>
<td><code>startX:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = 0</code></td>
<td>
<p>The x-coordinate of the first pixel to read from the <code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a></code></p>
</td>
</tr>
<tr>
<td><code>startY:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = 0</code></td>
<td>
<p>The y-coordinate of the first pixel to read from the <code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a></code></p>
</td>
</tr>
<tr>
<td><code>width:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = this.width</code></td>
<td>
<p>The number of pixels to read from each row</p>
</td>
</tr>
<tr>
<td><code>height:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = this.height</code></td>
<td>
<p>The number of rows to read</p>
</td>
</tr>
<tr>
<td><code>buffer:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html">IntArray</a> = IntArray(width * height)</code></td>
<td>
<p>The array to store the <code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html">ImageBitmap</a></code>'s colors. By default this allocates an <code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html">IntArray</a></code> large enough to store all the pixel information. Consumers of this API are advised to use the smallest <code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html">IntArray</a></code> necessary to extract relevant pixel information</p>
</td>
</tr>
<tr>
<td><code>bufferOffset:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = 0</code></td>
<td>
<p>The first index to write into the buffer array, this defaults to 0</p>
</td>
</tr>
<tr>
<td><code>stride:&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a> = width</code></td>
<td>
<p>The number of entries in <code><a href="/reference/kotlin/androidx/compose/ui/graphics/package-summary.html#(androidx.compose.ui.graphics.ImageBitmap).toPixelMap(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.IntArray,kotlin.Int,kotlin.Int)">buffer</a></code> to skip between rows (must be >= <code><a href="/reference/kotlin/androidx/compose/ui/graphics/package-summary.html#(androidx.compose.ui.graphics.ImageBitmap).toPixelMap(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.IntArray,kotlin.Int,kotlin.Int)">width</a></code></p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="devsite-table-wrapper">
<table class="responsive">
<colgroup>
<col width="40%">
<col>
</colgroup>
<thead>
<tr>
<th colspan="100%">See also</th>
</tr>
</thead>
<tbody class="list">
<tr>
<td><code><a href="/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap.html#readPixels(kotlin.IntArray,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)">readPixels</a></code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</devsite-filter >
</body>
</html>