Andrew Watson
08/30/2023, 10:08 PMImageBitmap
to the photos library on iOS via Kotlin? I'm looking around for a code sample but can't quite find it. I have some code but I get an odd null pointer exception:
actual fun saveBitmap(bmp: ImageBitmap) {
PHPhotoLibrary.requestAuthorization { status ->
if (status == PHAuthorizationStatusAuthorized) {
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
val bytes = bmp.asSkiaBitmap().readPixels()
bytes?.let { array ->
val nsData = array.toNSData()
val img = UIImage(data = nsData)
PHAssetChangeRequest.creationRequestForAssetFromImage(img)
}
}, null)
}
}
}
Andrew Watson
08/30/2023, 11:05 PMAlexander Maryanovsky
08/30/2023, 11:10 PMAndrew Watson
08/30/2023, 11:10 PMAndrew Watson
08/30/2023, 11:11 PMNSData
bytearray probably has to probably be just soAlexander Maryanovsky
08/30/2023, 11:19 PMImage.makeFromBitmap(bmp.asSkiaBitmap()).encodeToData().bytes
Andrew Watson
08/30/2023, 11:20 PMAlexander Maryanovsky
08/30/2023, 11:20 PMAlexander Maryanovsky
08/30/2023, 11:20 PMencodeToData
takes a format argument if you want other formatsAndrew Watson
08/30/2023, 11:31 PMAndrew Watson
08/30/2023, 11:32 PMactual fun saveBitmap(bmp: ImageBitmap) {
PHPhotoLibrary.requestAuthorization { status ->
if (status == PHAuthorizationStatusAuthorized) {
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
val bytes = Image.makeFromBitmap(bmp.asSkiaBitmap()).encodeToData()!!.bytes
val nsData = bytes.toNSData()
val img = UIImage(data = nsData)
PHAssetChangeRequest.creationRequestForAssetFromImage(img)
}, null)
}
}
}
Andrew Watson
08/30/2023, 11:47 PMDima Avdeev
08/31/2023, 5:48 AM