Added support for base64 encoded pictures in Friends
This commit is contained in:
parent
785be0b1fd
commit
9f5951280a
2 changed files with 18 additions and 1 deletions
|
@ -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) == "+") {
|
||||
|
|
|
@ -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?
|
||||
|
|
Loading…
Reference in a new issue