Conversión de Bitmaps a ByteArrays en Android Kotlin

Clase 24 de 33Curso de Android: Integración de APIs nativas

Resumen

Convertir imágenes entre formatos como Bitmap y ByteArray es clave en aplicaciones Android con múltiples capas. Al manejar proyectos estructurados en capas, puede ser necesario usar formatos simples como ByteArray en capas independientes como Domain, y formatos más específicos como Bitmap en capas relacionadas con Android.

¿Por qué usar ByteArray en proyectos multimodulares?

La transformación entre Bitmap y ByteArray permite mantener aisladas las capas de una aplicación:

  • En capas relacionadas con Android (como Presentación), es natural usar Bitmap.
  • En capas independientes (como Domain), un formato genérico como ByteArray ayuda a desacoplar dependencias específicas.

Esta estrategia facilita la modularidad y la reutilización del código.

¿Cómo convertir un Bitmap en ByteArray usando Kotlin?

Implementar esta conversión requiere usar una extensión en Kotlin:

fun Bitmap.toByteArray(
    quality: Int = 90,
    format: Bitmap.CompressFormat = Bitmap.CompressFormat.JPEG
): ByteArray {
    val stream = ByteArrayOutputStream()
    this.compress(format, quality, stream)
    return stream.toByteArray()
}

Aquí tienes dos variables clave para ajustar la calidad y formato de la imagen al comprimir.

¿Cómo pasar de ByteArray a Bitmap?

La conversión inversa es igualmente sencilla utilizando la clase BitmapFactory disponible en Android:

fun ByteArray.toBitmap(): Bitmap? {
    return BitmapFactory.decodeByteArray(this, 0, this.size)
}

Este método proporciona una manera eficiente y directa de recuperar imágenes del formato comprimido.

Te invitamos a compartir tus dudas y comentarios para explorar más sobre Kotlin y Android.