Android: как отобразить растровое изображение в WebView?

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

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

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

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

Ответы на вопрос(5)

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

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

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

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

Вы можете напрямую загрузить 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

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

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

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);
 breadbin01 июн. 2012 г., 15:50
Таким образом, мне нужно сохранить мое измененное растровое изображение в виде файла, а затем прочитать это?
 01 июн. 2012 г., 19:10
Вам не нужно сохранять файл, вам просто нужно получить полный путь к изображению.
 breadbin05 июн. 2012 г., 09:35
Как мне получить этот путь?
 breadbin01 июн. 2012 г., 13:49
Этот код для отображения изображения взят из URL? Это не то, что я пытаюсь сделать.
Решение Вопроса

Используя ссылку из 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", "");
 10 мая 2014 г., 05:20
Вы проверяли этот код? кажется, не работает
 11 мая 2014 г., 21:47
Спасибо за ваш комментарий. вы правы. Я добавил дополнительную строку в свой ответ, чтобы объяснить решение.
 12 мая 2014 г., 03:58
и я думаю, что базовый URL не имеет значения, он работал для меня также с webview.loadData
 10 мая 2014 г., 22:28
вложение строки изображения с тегом & lt; img src = ..... / & gt; тег решил проблему

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

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

Ваш ответ на вопрос