Skip to content

Commit 4be0c12

Browse files
authored
Merge pull request #132 from callstack/fix/retyui/issue-68
fix: Allow to use base64 uri on Android
2 parents 47a2c57 + bfab36f commit 4be0c12

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

android/src/main/java/com/reactnativecommunity/imageeditor/ImageEditorModuleImpl.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import android.net.Uri
1919
import android.os.Build
2020
import android.provider.MediaStore
2121
import android.text.TextUtils
22+
import android.util.Base64 as AndroidUtilBase64
2223
import androidx.exifinterface.media.ExifInterface
2324
import com.facebook.common.logging.FLog
2425
import com.facebook.infer.annotation.Assertions
@@ -27,11 +28,13 @@ import com.facebook.react.bridge.Promise
2728
import com.facebook.react.bridge.ReactApplicationContext
2829
import com.facebook.react.bridge.ReadableMap
2930
import com.facebook.react.common.ReactConstants
31+
import java.io.ByteArrayInputStream
3032
import java.io.File
3133
import java.io.FileOutputStream
3234
import java.io.IOException
3335
import java.io.InputStream
3436
import java.net.URL
37+
import java.util.Base64
3538
import kotlin.math.roundToInt
3639
import kotlinx.coroutines.CoroutineScope
3740
import 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

Comments
 (0)