Конвертируйте БОЛЬШОЙ объект изображения в растровый объект Android.
Я пытаюсь получить изображение из веб-представления, но, когда я вызываю "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" '.
Так что, если у кого-то есть такая же идея, дайте мне знать.
Спасибо
1 ответ
Попробуй это:
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. И предлагаемая альтернатива - создать растровое изображение. Больше информации здесь