# BitmapCompat

Artifact: [androidx.core:core](https://developer.android.com/jetpack/androidx/releases/core) [View Source](https://cs.android.com/search?q=file:androidx/core/graphics/BitmapCompat.java+class:androidx.core.graphics.BitmapCompat) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

*** ** * ** ***


```
public final class BitmapCompat
```

<br />

*** ** * ** ***

Helper for accessing features in `https://developer.android.com/reference/android/graphics/Bitmap.html`.

## Summary

| ### Public methods |
|---|---|
| `static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Bitmap.html` | `https://developer.android.com/reference/androidx/core/graphics/BitmapCompat#createScaledBitmap(android.graphics.Bitmap,int,int,android.graphics.Rect,boolean)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Bitmap.html srcBm, int dstW, int dstH, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/graphics/Rect.html srcRect, boolean scaleInLinearSpace )` Return a scaled bitmap. |
| `static int` | `@https://developer.android.com/reference/androidx/annotation/ReplaceWith(expression = "bitmap.getAllocationByteCount()") [getAllocationByteCount](https://developer.android.com/reference/androidx/core/graphics/BitmapCompat#getAllocationByteCount(android.graphics.Bitmap))(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Bitmap.html bitmap)` **This method is deprecated.** Call `https://developer.android.com/reference/android/graphics/Bitmap.html#getAllocationByteCount()` directly. <br /> |
| `static boolean` | `@https://developer.android.com/reference/androidx/annotation/ReplaceWith(expression = "bitmap.hasMipMap()") [hasMipMap](https://developer.android.com/reference/androidx/core/graphics/BitmapCompat#hasMipMap(android.graphics.Bitmap))(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Bitmap.html bitmap)` **This method is deprecated.** Call `https://developer.android.com/reference/android/graphics/Bitmap.html#hasMipMap()` directly. <br /> |
| `static void` | `@https://developer.android.com/reference/androidx/annotation/ReplaceWith(expression = "bitmap.setHasMipMap(hasMipMap)") [setHasMipMap](https://developer.android.com/reference/androidx/core/graphics/BitmapCompat#setHasMipMap(android.graphics.Bitmap,boolean))(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Bitmap.html bitmap, boolean hasMipMap)` **This method is deprecated.** Call setHasMipMap directly. <br /> |

## Public methods

### createScaledBitmap

Added in [1.8.0](https://developer.android.com/jetpack/androidx/releases/core#1.8.0)

```
public static @NonNull Bitmap createScaledBitmap(
    @NonNull Bitmap srcBm,
    int dstW,
    int dstH,
    @Nullable Rect srcRect,
    boolean scaleInLinearSpace
)
```

Return a scaled bitmap.

This algorithm is intended for downscaling by large ratios when high quality is desired. It is similar to the creation of mipmaps, but stops at the desired size. Visually, the result is smoother and softer than `https://developer.android.com/reference/android/graphics/Bitmap.html#createScaledBitmap(android.graphics.Bitmap, int, int, boolean)`

The returned bitmap will always be a mutable copy with a config matching the input except in the following scenarios:

1. The source bitmap is returned and the source bitmap is immutable.
2. The source bitmap is a `HARDWARE` bitmap. For this input, a mutable non-`HARDWARE` Bitmap is returned. On API 31 and up, the internal format of the HardwareBuffer is read to determine the underlying format, and the returned Bitmap will use a Config to match. Pre-31, the returned Bitmap will be `ARGB_8888`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Bitmap.html srcBm` | A source bitmap. It will not be altered. |
| `int dstW` | The output width |
| `int dstH` | The output height |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/graphics/Rect.html srcRect` | Uses a region of the input bitmap as the source. |
| `boolean scaleInLinearSpace` | When true, uses `LINEAR_EXTENDED_SRGB` as a color space when scaling. Otherwise, uses the color space of the input bitmap. (On API level 26 and earlier, this parameter has no effect). |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Bitmap.html` | A new bitmap in the requested size. |

### getAllocationByteCount

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0) Deprecated in [1.15.0](https://developer.android.com/jetpack/androidx/releases/core#1.15.0)

```
@ReplaceWith(expression = "bitmap.getAllocationByteCount()")
public static int [getAllocationByteCount](https://developer.android.com/reference/androidx/core/graphics/BitmapCompat#getAllocationByteCount(android.graphics.Bitmap))(@NonNull Bitmap bitmap)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Call `https://developer.android.com/reference/android/graphics/Bitmap.html#getAllocationByteCount()` directly.

Returns the size of the allocated memory used to store this bitmap's pixels.

This value will not change over the lifetime of a Bitmap.

| See also |
|---|---|
| `https://developer.android.com/reference/android/graphics/Bitmap.html#getAllocationByteCount()` |   |

### hasMipMap

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0) Deprecated in [1.15.0](https://developer.android.com/jetpack/androidx/releases/core#1.15.0)

```
@ReplaceWith(expression = "bitmap.hasMipMap()")
public static boolean [hasMipMap](https://developer.android.com/reference/androidx/core/graphics/BitmapCompat#hasMipMap(android.graphics.Bitmap))(@NonNull Bitmap bitmap)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Call `https://developer.android.com/reference/android/graphics/Bitmap.html#hasMipMap()` directly.

Indicates whether the renderer responsible for drawing this bitmap should attempt to use mipmaps when this bitmap is drawn scaled down.

If you know that you are going to draw this bitmap at less than 50% of its original size, you may be able to obtain a higher quality

This property is only a suggestion that can be ignored by the renderer. It is not guaranteed to have any effect.

| Returns |
|---|---|
| `boolean` | true if the renderer should attempt to use mipmaps, false otherwise |

| See also |
|---|---|
| `https://developer.android.com/reference/android/graphics/Bitmap.html#hasMipMap()` |   |

### setHasMipMap

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0) Deprecated in [1.15.0](https://developer.android.com/jetpack/androidx/releases/core#1.15.0)

```
@ReplaceWith(expression = "bitmap.setHasMipMap(hasMipMap)")
public static void [setHasMipMap](https://developer.android.com/reference/androidx/core/graphics/BitmapCompat#setHasMipMap(android.graphics.Bitmap,boolean))(@NonNull Bitmap bitmap, boolean hasMipMap)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Call setHasMipMap directly.

Set a hint for the renderer responsible for drawing this bitmap indicating that it should attempt to use mipmaps when this bitmap is drawn scaled down.

If you know that you are going to draw this bitmap at less than 50% of its original size, you may be able to obtain a higher quality by turning this property on.

Note that if the renderer respects this hint it might have to allocate extra memory to hold the mipmap levels for this bitmap.

This property is only a suggestion that can be ignored by the renderer. It is not guaranteed to have any effect.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Bitmap.html bitmap` | bitmap for which to set the state. |
| `boolean hasMipMap` | indicates whether the renderer should attempt to use mipmaps |

| See also |
|---|---|
| `https://developer.android.com/reference/android/graphics/Bitmap.html#setHasMipMap(boolean)` |   |