Intereting Posts
Получить GPS-местоположение в широковещательном приемнике / или услуге для передачи данных приемника Broadcast Ошибка установки из-за неверного URI? Устанавливается только в режиме отладки? Разработка приложения экрана блокировки Android Какую библиотеку WebSocket использовать в приложении Android? Как отключить GSM-соединение в Android программно Телефонная геолокация всегда сбой при тайм-ауте Выберите по крайней мере один из каждой категории? Ошибка: выполнение выполнено для задачи ': app: transformClassesWithDexForDebug'. > Com.android.build.api.transform.TransformException: .. ненулевое значение выхода 3 Recyclerview внутри прокрутки вложенной прокрутки, но не ускоряет прокрутку, как обычно Recyclerview или Nested Scrollview Создание службы на Android PhoneGap: есть ли способ, чтобы клавиатура не изменяла размер представления? Android Billing V3 Subscriptions Issue – подписка застряла в состоянии, которое нельзя отменить Проблемы с GridView внутри ScrollView в android Мигающий текст в представлении android Связанный с базой данных TextView для Android TextView

Конвертировать представление в растровое изображение на Android

Мне нужно преобразовать представление в растровое изображение для предварительного просмотра моего представления и сохранения его в качестве изображения. Я попытался использовать следующий код, но он создает пустое изображение. Я не могу понять, где я ошибся.

View viewToBeConverted; Bitmap viewBitmap = Bitmap.createBitmap(viewToBeConverted.getWidth(), viewToBeConverted.getHeight(),Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(viewBitmap); viewToBeConverted.draw(canvas); savephoto(“f1”, viewBitmap); //// public void savephoto(String filename,Bitmap bit) { File newFile = new File(Environment.getExternalStorageDirectory() + Picture_Card/"+ filename+ ".PNG"); try { newFile.createNewFile(); try { FileOutputStream pdfFile = new FileOutputStream(newFile); Bitmap bm = bit; ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG,100, baos); byte[] bytes = baos.toByteArray(); pdfFile.write(bytes); pdfFile.close(); } catch (FileNotFoundException e) { // } } catch (IOException e) { // } } 

Solutions Collecting From Web of "Конвертировать представление в растровое изображение на Android"

Вот мое решение:

  public static Bitmap getBitmapFromView(View view) { //Define a bitmap with the same size as the view Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888); //Bind a canvas to it Canvas canvas = new Canvas(returnedBitmap); //Get the view's background Drawable bgDrawable =view.getBackground(); if (bgDrawable!=null) //has background drawable, then draw it on the canvas bgDrawable.draw(canvas); else //does not have background drawable, then draw white background on the canvas canvas.drawColor(Color.WHITE); // draw the view on the canvas view.draw(canvas); //return the bitmap return returnedBitmap; } 

Наслаждаться 🙂

Самое голосованое решение не сработало для меня, потому что мой взгляд на ViewGroup (был завышен от LayoutInflater). Мне нужно было вызвать view.measure, чтобы заставить вычислять размер вида, чтобы получить правильный размер вида с помощью view.getMeasuredWidth (Height).

 public static Bitmap getBitmapFromView(View view) { view.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.draw(canvas); return bitmap; } 

Все ответы, используя рисунок на холсте, не будут работать с GLSurfaceView.

Чтобы захватить содержимое GLSurfaceView в растровое изображение, вы должны рассмотреть возможность реализации пользовательского метода с gl.glReadPixels внутри Renderer :: onDrawFrame () .

Здесь размещен фрагмент решения.