我有一个字符串形式的KotlinByteArray,我想将它转换为NS Data,以便在Swift中加载图像。谁能帮我做这个。我在Swift中使用KMM框架,它返回图像的KotlinByteArray,我想将其转换为NS Data来加载图像,或者至少我需要一种使用KotlinByteArray加载图像的方法
fxnxkyjh1#
如果您只想显示图像,可以通过将byteArray转换为NSData来实现在shared模块内部创建一个expect fun,返回一个ImageBitmap
@Composable expect fun rememberImageFromBytes(bytes:ByteArray) : ImageBitmap?
字符串
androidMain
@Composable actual fun rememberImageFromBytes(bytes : ByteArray) : ImageBitmap? { return remember(bytes){ if(bytes != null){ BitmapFactory.decodeByteArray(bytes,0,bytes.size).asImageBitmap() }else{ null }
型
iosMain
@Composable actual fun rememberImageFromBytes(bytes : ByteArray) : ImageBitmap? { return remember(bytes){ if(bytes != null){ Bitmap.makeFromImage( Image.makeFromEncoded(bytes) ).asComposeImageBitmap() }else{ null }
型只有在您的项目中启用了撰写多平台插件时,这才有效。如果你想将byteArray转换为NSData,你可以使用:
private val fileManager = NSFileManager.defaultManager private val documentDirectory = NSSearchPathForDirectoriesInDomains( directory = NSDocumentDirectory, domainMask = NSUserDomainMask, expandTilde = true ).first as NSString actual suspend fun saveImage(filename : String,bytes : ByteArray) : String { val path = documentDirectory.stringByAppendingPathComponent(filename) val data = bytes.usePinned { NSData.create( bytes = it.addressOf(0), length = bytes.size.toULong() ) } data.writeFile(path = path,atomically = true)
1条答案
按热度按时间fxnxkyjh1#
如果您只想显示图像,可以通过将byteArray转换为NSData来实现
在shared模块内部创建一个expect fun,返回一个ImageBitmap
字符串
androidMain
型
iosMain
型
只有在您的项目中启用了撰写多平台插件时,这才有效。
如果你想将byteArray转换为NSData,你可以使用:
型