1

Web ビューから画像を取得しようとしていますが、「webView.capturePicture()」を呼び出すと、Picture オブジェクトが表示されます。ほとんどの場合、これで十分です。次のコードを使用してビットマップ オブジェクトに変換します。

Bitmap b = Bitmap.createBitmap(picture.getWidth(), picture.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
picture.draw(c);

ただし、同じ場合、作成されるビットマップは、Android がメモリ上でサポートするサイズよりも大きくなります。

したがって、メモリ内のビットマップのインスタンスなしで、Picture オブジェクトをファイル内のビットマップ オブジェクトに直接変換する方法を知る必要があります (それが解決策になると思います)。またはそれと同じです。要点は、画像オブジェクトからビットマップを作成することですが、大きすぎてできません

PS:「 android:largeHeap="true" 」は使いたくありません。

誰かが同じ考えを持っているなら、私に知らせてください。

ありがとう

4

1 に答える 1

0

これを試して:

Picture p = webView.capturePicture();  
FileOutputStream fos;

try {
   fos = new FileOutputStream("/sdcard/picture");
   p.writeToStream(fos);
   fos.flush();
   fos.close();
} catch (FileNotFoundException e) {
   e.printStackTrace();
} catch (IOException e) {
   e.printStackTrace();
}  

警告: Picture.writeToStream() は API レベル 18 から廃止されました。推奨される代替手段は、ビットマップを作成することです。詳細はこちら

于 2013-10-29T16:58:14.380 に答える