BitmapCompat

Added in 1.1.0

public final class BitmapCompat


Helper for accessing features in Bitmap.

Summary

Public methods

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

Return a scaled bitmap.

static int
@ReplaceWith(expression = "bitmap.getAllocationByteCount()")
getAllocationByteCount(@NonNull Bitmap bitmap)

This method is deprecated.

Call getAllocationByteCount directly.

static boolean
@ReplaceWith(expression = "bitmap.hasMipMap()")
hasMipMap(@NonNull Bitmap bitmap)

This method is deprecated.

Call hasMipMap directly.

static void
@ReplaceWith(expression = "bitmap.setHasMipMap(hasMipMap)")
setHasMipMap(@NonNull Bitmap bitmap, boolean hasMipMap)

This method is deprecated.

Call setHasMipMap directly.

Public methods

createScaledBitmap

Added in 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 createScaledBitmap

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
@NonNull Bitmap srcBm

A source bitmap. It will not be altered.

int dstW

The output width

int dstH

The output height

@Nullable Rect 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
@NonNull Bitmap

A new bitmap in the requested size.

getAllocationByteCount

Added in 1.1.0
Deprecated in 1.15.0
@ReplaceWith(expression = "bitmap.getAllocationByteCount()")
public static int getAllocationByteCount(@NonNull Bitmap bitmap)

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.

hasMipMap

Added in 1.1.0
Deprecated in 1.15.0
@ReplaceWith(expression = "bitmap.hasMipMap()")
public static boolean hasMipMap(@NonNull Bitmap bitmap)

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
hasMipMap

setHasMipMap

Added in 1.1.0
Deprecated in 1.15.0
@ReplaceWith(expression = "bitmap.setHasMipMap(hasMipMap)")
public static void setHasMipMap(@NonNull Bitmap bitmap, boolean hasMipMap)

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
@NonNull Bitmap bitmap

bitmap for which to set the state.

boolean hasMipMap

indicates whether the renderer should attempt to use mipmaps

See also
setHasMipMap