在Android上将HTML转换为图像(任何格式)

pet*_*lor 5 html android image

有谁知道如何将html代码(其中包含图像)转换为Android上的图像?我知道如何使用JLabel / JEditorPane和BufferedImage在Java上实现此功能,但现在应该在Android上实现相同功能。

小智 5

对于此任务,我使用以下技巧:我使用 webview 解析 HTML 并调用 WevView 对象上的 capturePicture 方法来提取 HTML 图片,因此我可以建议您使用以下代码片段:

WebView wv = new WebView(this);
wv.loadData("<html><body><p>Hello World</p></body></html>");
Picture p = wv.capturePicture();
Run Code Online (Sandbox Code Playgroud)

我希望这会有所帮助,但如果您找到了不同的解决方法,请发布它。


nho*_*ass 5

@ Neo1975的答案对我有用,但是要避免使用不推荐使用的方法WebView.capturePicture(),可以使用以下方法捕获WebView的内容。

/**
* WevView screenshot
*
* @param webView
* @return
*/
private static Bitmap screenshot(WebView webView) {
  webView.measure(View.MeasureSpec.makeMeasureSpec(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED),View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
    webView.layout(0, 0, webView.getMeasuredWidth(), 
    webView.getMeasuredHeight());
    webView.setDrawingCacheEnabled(true);
    webView.buildDrawingCache();
    Bitmap bitmap = Bitmap.createBitmap(webView.getMeasuredWidth(), 
    webView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(bitmap);
    Paint paint = new Paint();
    int iHeight = bitmap.getHeight();
    canvas.drawBitmap(bitmap, 0, iHeight, paint);
    webView.draw(canvas);
    return bitmap;
}
Run Code Online (Sandbox Code Playgroud)

其背后的想法是使用WebView.draw(Canvas)方法。