@@ -19,6 +19,7 @@ import android.net.Uri
19
19
import android.os.Build
20
20
import android.provider.MediaStore
21
21
import android.text.TextUtils
22
+ import android.util.Base64 as AndroidUtilBase64
22
23
import androidx.exifinterface.media.ExifInterface
23
24
import com.facebook.common.logging.FLog
24
25
import com.facebook.infer.annotation.Assertions
@@ -27,11 +28,13 @@ import com.facebook.react.bridge.Promise
27
28
import com.facebook.react.bridge.ReactApplicationContext
28
29
import com.facebook.react.bridge.ReadableMap
29
30
import com.facebook.react.common.ReactConstants
31
+ import java.io.ByteArrayInputStream
30
32
import java.io.File
31
33
import java.io.FileOutputStream
32
34
import java.io.IOException
33
35
import java.io.InputStream
34
36
import java.net.URL
37
+ import java.util.Base64
35
38
import kotlin.math.roundToInt
36
39
import kotlinx.coroutines.CoroutineScope
37
40
import kotlinx.coroutines.Dispatchers
@@ -265,7 +268,14 @@ class ImageEditorModuleImpl(private val reactContext: ReactApplicationContext) {
265
268
}
266
269
267
270
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)) {
269
279
reactContext.contentResolver.openInputStream(Uri .parse(uri))
270
280
} else {
271
281
val connection = URL (uri).openConnection()
0 commit comments