package com.suno.android.utils import android.content.Context import android.graphics.Bitmap import android.graphics.BitmapFactory import android.net.Uri import android.util.Base64 import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.io.ByteArrayOutputStream import java.io.InputStream suspend fun uriToBase64DataUrl( context: Context, uri: Uri, ): String? = withContext(Dispatchers.IO) { try { val inputStream: InputStream? = context.contentResolver.openInputStream(uri) val bitmap = BitmapFactory.decodeStream(inputStream) inputStream?.close() // Compress the bitmap to reduce size if needed val outputStream = ByteArrayOutputStream() bitmap.compress(Bitmap.CompressFormat.JPEG, 80, outputStream) val byteArray = outputStream.toByteArray() // Convert to base64 with data URL prefix val base64String = Base64.encodeToString(byteArray, Base64.NO_WRAP) "data:image/jpeg;base64,$base64String" } catch (e: Exception) { e.printStackTrace() null } }