Added support for base64 encoded pictures in Friends

This commit is contained in:
Sylvain Berfini 2023-02-24 10:17:22 +01:00
parent 785be0b1fd
commit 9f5951280a
2 changed files with 18 additions and 1 deletions

View file

@ -372,8 +372,13 @@ private suspend fun loadContactPictureWithCoil(
} else {
val displayName = contact.contact.value?.name ?: contact.displayName.value.orEmpty()
val source = contact.contact.value?.getPictureUri(useThumbnail)
val sourceStr = source.toString()
val base64 = if (ImageUtils.isBase64(sourceStr)) {
Log.d("[Coil] Picture URI is base64 encoded")
ImageUtils.getBase64ImageFromString(sourceStr)
} else null
imageView.load(source) {
imageView.load(base64 ?: source) {
transformations(CircleCropTransformation())
error(
if (displayName.isEmpty() || AppUtils.getInitials(displayName) == "+") {

View file

@ -22,12 +22,24 @@ package org.linphone.utils
import android.content.Context
import android.graphics.*
import android.net.Uri
import android.util.Base64
import java.io.FileNotFoundException
import org.linphone.compatibility.Compatibility
import org.linphone.core.tools.Log
class ImageUtils {
companion object {
private const val BASE64_REGEX = "^data:image\\/(gif|png|jpeg|bmp|webp|svg\\+xml)(;charset=utf-8)?;base64,[A-Za-z0-9+\\/]+={0,2}\$"
fun isBase64(source: String): Boolean {
return source.matches(Regex(BASE64_REGEX))
}
fun getBase64ImageFromString(base64: String): ByteArray? {
val substring = base64.substring(base64.indexOf(",") + 1)
return Base64.decode(substring, Base64.DEFAULT)
}
fun getRoundBitmapFromUri(
context: Context,
fromPictureUri: Uri?