9

組み込みのパンおよびズーム機能により、マップのような画像を表示するために WebView を使用しています。ただし、マップ イメージ上の特定のポイントに他の情報 (マーカーなど) を重ねて表示する必要があります。

そこで、ベース マップ イメージをビットマップとして取得し、その上に他のイメージを (キャンバスとその他のビットマップを使用して) オーバーレイし、すべての情報を含む最終的なビットマップを作成します。実行時に画像を編集する必要があるため、事前に作成されたファイルは使用できません。ビットマップのオーバーレイを実装することは問題ではありません。問題は、パンとズーム機能を使用して結果の画像を簡単に表示する方法がわからないことです。

WebView を使用してビットマップを表示する方法はありますか? または他の提案はありますか?

4

5 に答える 5

33

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", "");
于 2013-03-30T10:55:49.003 に答える
2

ウェブビューに画像をロードしたい場合、プレースホルダーは必要ありません

webview に 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

それが他の人に役立つことを願っています! :-)

于 2015-12-19T07:55:19.410 に答える
1

通常、webview では、html タグを使用して画像を設定できます。これで問題は発生しません。

とにかく、サンプルの質問と回答にはこのリンクを使用してください

AndroidのWebViewで黒い背景を表示するBase64文字列にビットマップするのはなぜですか?

于 2012-06-01T11:17:31.533 に答える
1

答えは次のようです: いいえ、ローカル ビットマップ オブジェクトをファイルに保存せずに Web ビューに表示することはできません。

于 2012-06-11T10:26:17.317 に答える
-2

Bitmap は必要ありません。その名前だけで十分です。以下を試してください:

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);
于 2012-06-01T11:25:59.510 に答える