package com.dynamsoft.reactnativelib.basicutils import android.content.res.Resources import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable import android.util.Base64 import com.dynamsoft.core.basic_structures.ImageData import java.io.ByteArrayOutputStream fun bitmap2Byte(bitmap: Bitmap?): ByteArray? { if (null == bitmap) return null val outputStream = ByteArrayOutputStream() bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream) return outputStream.toByteArray() } fun byte2Base64(imageByte: ByteArray?): String? { return if (null == imageByte) null else Base64.encodeToString(imageByte, Base64.NO_WRAP) } fun bitmap2Base64(bitmap: Bitmap?): String? { return byte2Base64(bitmap2Byte(bitmap)) } fun base64ToBitmap(base64: String?): Bitmap? { if (base64 == null) { return null } val bytes: ByteArray = Base64.decode(base64, Base64.DEFAULT) return BitmapFactory.decodeByteArray(bytes, 0, bytes.size) } fun bitmap2Drawable(bitmap: Bitmap?, resources: Resources): Drawable? { if (bitmap == null) { return null } return BitmapDrawable(resources, bitmap) } fun base64ToDrawable(base64: String?, resources: Resources): Drawable? { return bitmap2Drawable(base64ToBitmap(base64), resources) } fun imageData2base64(imageData: ImageData?): String { var bytes: ByteArray? = null imageData?.apply { val baos = ByteArrayOutputStream() toBitmap()?.compress(Bitmap.CompressFormat.JPEG, 100, baos) bytes = baos.toByteArray() } if (bytes == null) { return "" } return Base64.encodeToString(bytes, Base64.DEFAULT)?:"" }