Вопрос по android, bitmap, webview – Android: как отобразить растровое изображение в WebView?

7

Я использую WebView для отображения изображения, подобного карте, благодаря встроенным функциям панорамирования и масштабирования. Однако мне нужно наложить некоторую другую информацию (маркеры и т. Д.) В определенных точках на изображении карты и отобразить все это.

Поэтому я беру свое базовое изображение карты как растровое изображение и накладываю поверх него другие изображения (используя холст и другие растровые изображения), давая мне окончательное растровое изображение со всей информацией. Поскольку мне нужно редактировать изображение во время выполнения, я не могу использовать готовый файл. Реализация наложения растровых изображений не является проблемой, проблема в том, что я не знаю, как легко отобразить полученное изображение с возможностями панорамирования и масштабирования.

Есть ли способ отобразить растровое изображение с помощью WebView? Или какие-либо другие предложения?

Есть довольно хорошие библиотеки, которые поддерживают панорамирование и масштабирование в Android. Один пример -github.com/sephiroth74/ImageViewZoom Heitara

Ваш Ответ

5   ответов
1

Обычно в веб-просмотре мы можем устанавливать изображения, используя HTML-теги ... это не создает проблем.

В любом случае используйте эту ссылку для образца вопроса и ответа

Почему Bitmap в Base64 String показывает черный фон при просмотре веб-страниц в Android?

2

Вам не нужен заполнитель, если вы хотите загрузить изображение в веб-просмотр

Вы можете напрямую загрузить dataurl в веб-просмотр. Например:

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
String imgageBase64 = Base64.encodeToString(byteArray, Base64.DEFAULT);
    String dataURL= "data:image/png;base64," + imgageBase64;

webview.loadUrl(dataURL); //pass the bitmap base64 dataurl in URL parameter

Надеюсь, это поможет другим! :-)

-1

Вам не требуется растровое изображение, достаточно его названия. Попробуйте следующее:

html = "<html><img src=\"" + imageUrl
                        + "\"></html>";
final WebView webView = (WebView) view
                    .findViewById(R.id.yourWebView);
wvImageView.getSettings().setJavaScriptEnabled(true);
wvImageView.loadDataWithBaseURL("", html, "text/html", "utf-8", "");

Это должно отобразить ваше изображение в WebView. Если вы хотите обеспечить масштабирование, попробуйте это:

webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
Вам не нужно сохранять файл, вам просто нужно получить полный путь к изображению.
Как мне получить этот путь? breadbin
Этот код для отображения изображения взят из URL? Это не то, что я пытаюсь сделать. breadbin
Таким образом, мне нужно сохранить мое измененное растровое изображение в виде файла, а затем прочитать это? breadbin
23

Используя ссылку из itsrajesh4uguys, я создал этот фрагмент кода:

// Desired Bitmap and the html code, where you want to place it
Bitmap bitmap = YOUR_BITMAP;
String html="<html><body><img src='{IMAGE_PLACEHOLDER}' /></body></html>";

// Convert bitmap to Base64 encoded image for web
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
String imgageBase64 = Base64.encodeToString(byteArray, Base64.DEFAULT);
    String image = "data:image/png;base64," + imgageBase64;

// Use image for the img src parameter in your html and load to webview
html = html.replace("{IMAGE_PLACEHOLDER}", image);
webview.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", "");
Вы проверяли этот код? кажется, не работает
Спасибо за ваш комментарий. вы правы. Я добавил дополнительную строку в свой ответ, чтобы объяснить решение.
и я думаю, что базовый URL не имеет значения, он работал для меня также с webview.loadData
вложение строки изображения с тегом & lt; img src = ..... / & gt; тег решил проблему
1

Кажется, ответ таков: нет, отображение локального растрового объекта в веб-просмотре без сохранения его в файл невозможно.

Ложь. Создайте тег Img для отображения изображения в виде HTML-писем со встроенными изображениями. Использует & lt; img & gt; тег, но src - это не URL, а данные, закодированные в base64. img src все еще может быть изменен с помощью JavaScript.
Возможно загружать и отображать растровое изображение. Проверьте типи ответа SONY. Это объясняет, как это сделать.

Похожие вопросы