@@ -19,6 +19,7 @@ import android.net.Uri
1919import android.os.Build
2020import android.provider.MediaStore
2121import android.text.TextUtils
22+ import android.util.Base64 as AndroidUtilBase64
2223import androidx.exifinterface.media.ExifInterface
2324import com.facebook.common.logging.FLog
2425import com.facebook.infer.annotation.Assertions
@@ -27,11 +28,13 @@ import com.facebook.react.bridge.Promise
2728import com.facebook.react.bridge.ReactApplicationContext
2829import com.facebook.react.bridge.ReadableMap
2930import com.facebook.react.common.ReactConstants
31+ import java.io.ByteArrayInputStream
3032import java.io.File
3133import java.io.FileOutputStream
3234import java.io.IOException
3335import java.io.InputStream
3436import java.net.URL
37+ import java.util.Base64
3538import kotlin.math.roundToInt
3639import kotlinx.coroutines.CoroutineScope
3740import kotlinx.coroutines.Dispatchers
@@ -265,7 +268,14 @@ class ImageEditorModuleImpl(private val reactContext: ReactApplicationContext) {
265268 }
266269
267270 private fun openBitmapInputStream (uri : String ): InputStream ? {
268- return if (isLocalUri(uri)) {
271+ return if (uri.startsWith(" data:" )) {
272+ val src = uri.substring(uri.indexOf(" ," ) + 1 )
273+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) {
274+ ByteArrayInputStream (Base64 .getMimeDecoder().decode(src))
275+ } else {
276+ ByteArrayInputStream (AndroidUtilBase64 .decode(src, AndroidUtilBase64 .DEFAULT ))
277+ }
278+ } else if (isLocalUri(uri)) {
269279 reactContext.contentResolver.openInputStream(Uri .parse(uri))
270280 } else {
271281 val connection = URL (uri).openConnection()
0 commit comments