From 62894a4f5dbe7c8f28693842a2fd07356ea5f433 Mon Sep 17 00:00:00 2001 From: rapsealk Date: Thu, 12 Oct 2017 19:54:37 +0900 Subject: [PATCH] insert image as base64 --- .../jp/wasabeef/richeditor/RichEditor.java | 9 ++++++++ .../java/jp/wasabeef/richeditor/Utils.java | 23 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/richeditor/src/main/java/jp/wasabeef/richeditor/RichEditor.java b/richeditor/src/main/java/jp/wasabeef/richeditor/RichEditor.java index f94339e..106e564 100644 --- a/richeditor/src/main/java/jp/wasabeef/richeditor/RichEditor.java +++ b/richeditor/src/main/java/jp/wasabeef/richeditor/RichEditor.java @@ -368,6 +368,15 @@ public void insertImage(String url, String alt) { exec("javascript:RE.insertImage('" + url + "', '" + alt + "');"); } + public void insertImageAsBase64(Uri imageURI) { + String path = Utils.convertUriToPath(imageURI); + Bitmap bitmap = BitmapFactory.decodeFile(path); + String format = getContentResolver().getType(imageURI).toLowerCase(); + String tag = "data:image/" + format + ";base64, "; + exec("javascript:RE.prepareInsert();"); + exec("javascript:RE.insertImage('" + tag + Utils.toBase64(bitmap, format) + "','');"); + } + public void insertLink(String href, String title) { exec("javascript:RE.prepareInsert();"); exec("javascript:RE.insertLink('" + href + "', '" + title + "');"); diff --git a/richeditor/src/main/java/jp/wasabeef/richeditor/Utils.java b/richeditor/src/main/java/jp/wasabeef/richeditor/Utils.java index d88b1e9..a77af18 100644 --- a/richeditor/src/main/java/jp/wasabeef/richeditor/Utils.java +++ b/richeditor/src/main/java/jp/wasabeef/richeditor/Utils.java @@ -39,6 +39,21 @@ public static String toBase64(Bitmap bitmap) { return Base64.encodeToString(bytes, Base64.NO_WRAP); } + public static String toBase64(Bitmap bitmap, String type) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + switch (type) { + case 'jpg': case 'jpeg': + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); + break; + case 'png': + bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); + break; + } + byte[] bytes = baos.toByteArray(); + + return Base64.encodeToString(bytes, Base64.NO_WRAP); + } + public static Bitmap toBitmap(Drawable drawable) { if (drawable instanceof BitmapDrawable) { return ((BitmapDrawable) drawable).getBitmap(); @@ -64,4 +79,12 @@ public static Bitmap decodeResource(Context context, int resId) { public static long getCurrentTime() { return System.currentTimeMillis(); } + + public static String convertUriToPath(Uri uri) { + String[] data = { MediaStore.Images.Media.DATA }; + Cursor cursor = getContentResolver().query(uri, project, null, null, null); + int index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); + cursor.moveToFirst(); + return cursor.getString(index); + } }