0

android.webkit.WebView には、現在の WebView のコンテンツ全体をキャプチャするためのcapturePicture () がありますが、Web ページの特定の要素のみに対してこれを行うにはどうすればよいでしょうか? たとえば、CSS で配置された多くの画像とテキスト要素がある場合があります。多くの要素があるかもしれませんが、WebView でレンダリングされている divようにキャプチャしたいと思います。div

私が思いついた唯一のアイデアは、それdivを別の WebView の HTML 全体としてのみロードし、 capturePicture. もう 1 つの質問は、Pictureオブジェクトを iText ライブラリ (PNG、JPEG、GIF) で使用できる形式にする方法です。これを達成する簡単な方法はありますか?

(私のアプリの機能は、PDF文書を出力することです。)

4

1 に答える 1

1

view.setDrawingCacheEnabled(true);ビューを画像としてキャプチャするために使用できます。そして、そのためのメソッドを作成する必要があります。そして、これが私の保存方法です

    void Save() {
    if (null != view.getDrawable()) {
        view.setDrawingCacheEnabled(true);
        view.buildDrawingCache();
        save = view.getDrawingCache();
        final File myDir = new File(folder);
        myDir.mkdirs();
        final Random generator = new Random();
        int n = 10000;
        n = generator.nextInt(n);
        final String fname = "StyleMe-" + n + ".png";
          file = new File(myDir, fname);
        if (file.exists())
            file.delete();
        try {
            final FileOutputStream out = new FileOutputStream(file);
            save.compress(Bitmap.CompressFormat.PNG, 100, out);
            out.flush();
            out.close();
            sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                    Uri.parse("file://"
                            + Environment.getExternalStorageDirectory())));
            Toast.makeText(getApplication(), "Image Saved",
                    Toast.LENGTH_SHORT).show();
        } catch (final Exception e) {
            Toast.makeText(getApplication(),
                    "Something Went Wrong check if you have Enough Memory",
                    Toast.LENGTH_LONG).show();
        }
    } else {
        final Toast tst = Toast.makeText(getApplication(),
                "Please Select An Image First", Toast.LENGTH_LONG);
        tst.setGravity(Gravity.CENTER, 0, 0);
        tst.show();
    }
    view.setDrawingCacheEnabled(false);
}
于 2013-02-20T08:10:17.910 に答える