Как создать растровое изображение из скриншота вида размером больше экрана?

#java #android #bitmap

#java #Android #растровое изображение

Вопрос:

Я пытаюсь создать растровое изображение, которое делает «скриншот» вида, но который больше размера экрана, мне нужно растровое изображение размером 1500px x 2115px, чтобы после этого превратить его в PDF, но на телефоне оно слишком большое.

Вот мой код, который работает, если я использую его с планшетом, но не с телефоном :

 public void layoutToImage(View view, String imageName) {
    view.setDrawingCacheEnabled(true);
    view.measure(View.MeasureSpec.makeMeasureSpec(1500, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(2115, View.MeasureSpec.EXACTLY));

    view.layout(0, 0, 1500, 2115);

    view.buildDrawingCache(false);

    Bitmap bm = view.getDrawingCache();
    Intent share = new Intent(Intent.ACTION_SEND);
    share.setType("image/jpeg");
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    bm.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

    File mFileImg = new File(Environment.getExternalStorageDirectory()   File.separator   imageName);
    try {
        mFileImg.createNewFile();
        FileOutputStream fo = new FileOutputStream(mFileImg);
        fo.write(bytes.toByteArray());
    } catch (IOException e) {
        e.printStackTrace();
    }

}
  

Возможно ли добиться того же результата на планшете, что и на телефоне? Любое решение или предложение будет полезно,
спасибо.

Комментарии:

1. Не используйте кэш чертежей. Я знаю, что есть тысячи примеров, которые показывают это, но это никогда не рекомендовалось. Используйте Bitmap.create() метод для создания соответствующего размера Bitmap , создайте Canvas на этом Bitmap , затем view.draw() на этом Canvas . Однако будьте осторожны с большими изображениями, так как очень легко очень быстро исчерпать память.

2. Спасибо за советы!