Conversión de Bitmaps a ByteArrays en Android Kotlin
Clase 24 de 33 • Curso 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.