Конвертируйте БОЛЬШОЙ объект изображения в растровый объект 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. И предлагаемая альтернатива - создать растровое изображение. Больше информации здесь

Другие вопросы по тегам