Eduardo Ruesta
10/10/2024, 2:02 PMdata:image/png;base64
so i created this fun :
fun String.cleanupImageString(): String {
return this.replace("data:image/png;base64,", "")
.replace("data:image/jpeg;base64,", "")
}
the i used this fun to convert to byteArray encoded to Image and convert to ImageBitmap:
@OptIn(ExperimentalEncodingApi::class)
actual fun String.decodeThumbnailImage(): ImageBitmap? {
return try {
val byteArray = Base64.decode(cleanupImageString())
val skiaImage = Image.makeFromEncoded(byteArray)
skiaImage.toComposeImageBitmap()
} catch (e: Exception) {
null
}
}
but its returning null. Any idea? or another approach? thanksCsaba Szugyiczki
10/10/2024, 2:28 PMEduardo Ruesta
10/10/2024, 2:29 PMEduardo Ruesta
10/10/2024, 2:31 PMkotlin.IllegalArgumentException: Invalid symbol '
'(12) at index 76
Eduardo Ruesta
10/10/2024, 2:31 PMfun String.cleanupImageString(): String {
return this.replace("data:image/png;base64,", "")
.replace("data:image/jpeg;base64,", "")
}
Csaba Szugyiczki
10/10/2024, 2:37 PMmakeFromEncoded
method, which does not seem to be the right way to do thisCsaba Szugyiczki
10/10/2024, 2:38 PM@OptIn(ExperimentalEncodingApi::class)
actual fun String.decodeThumbnailImage(): ImageBitmap? {
return try {
val byteArray = cleanupImageString().toByteArray()
val skiaImage = Image.makeFromEncoded(byteArray)
skiaImage.toComposeImageBitmap()
} catch (e: Exception) {
null
}
}
Csaba Szugyiczki
10/10/2024, 2:38 PMEduardo Ruesta
10/10/2024, 2:39 PMChrimaeon
10/10/2024, 2:40 PMImage.makeFromEncoded
so you don’t need to guess what it expects 😅Eduardo Ruesta
10/10/2024, 2:41 PMfun makeFromEncoded(bytes: ByteArray): Image {
Stats.onNativeCall()
val ptr = interopScope {
_nMakeFromEncoded(toInterop(bytes), bytes.size)
}
require(ptr != NullPointer) { "Failed to Image::makeFromEncoded" }
return Image(ptr)
}
Eduardo Ruesta
10/10/2024, 2:59 PMEduardo Ruesta
10/10/2024, 2:59 PM