Преобразование холста в растровое изображение в android

Я пытаюсь разработать приложение на холсте, я рисую растровое изображение на холсте. После рисования, я пытаюсь преобразовать в растровое изображение.

Может ли кто-нибудь дать мне предложение.

заранее спасибо.

Solutions Collecting From Web of "Преобразование холста в растровое изображение в android"

Совет зависит от того, что вы пытаетесь сделать.

Если вы обеспокоены тем, что ваши элементы управления занимают много времени, и вы хотите рисовать в растровое изображение, чтобы вы могли разжечь растровое изображение, а не перерисовывать с помощью холста, то вы не хотите, чтобы он дважды угадывал платформу – элементы управления автоматически кэшируют их чертеж во временные растровые изображения, и их можно даже извлечь из элемента управления, используя getDrawingCache()

Если вы хотите рисовать с помощью холста в растровое изображение, обычный рецепт:

  1. Создайте растровое изображение правильного размера с помощью Bitmap.createBitmap()
  2. Создайте экземпляр canvas, указывающий, что это растровое изображение с использованием Canvas(Bitmap) конструктора
  3. Нарисуйте холст
  4. Использовать растровое изображение

Таким образом, вы создаете новый Bitmap , например:

Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 )

С width и height что и ваш холст.

Затем используйте canvas.setBitmap(myBitmap) , но не drawBitmap() .

После того, как вы вызываете setBitmap , все, что вы setBitmap на холсте, на самом деле, опираясь на ваш myBitmap происходит на примере кода, который я проиллюстрировал.

Изменить :

Вы не можете создать растровое изображение напрямую, например:

 Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 ); 

Вместо этого вы должны использовать:

 Bitmap myBitmap = Bitmap.createBitmap( (int)Width, (int)Height, Config.RGB_565 ); 

Другой пример:

 public Bitmap getBitmapNews(int item , boolean selected, int numbernews){ Bitmap bitmap; if(selected) bitmap=mBitmapDown[item].copy(Config.ARGB_8888, true); else bitmap=mBitmapUp[item].copy(Config.ARGB_8888, true); Canvas canvas = new Canvas(bitmap); if(numbernews<10){ canvas.drawBitmap(mNotiNews[numbernews],0,0,null); }else{ canvas.drawBitmap(mNotiNews[0],0,0,null); } return bitmap; } 

Ниже приведены шаги для преобразования из холста в растровое изображение и сохранения его в галерее или в определенной папке.

Примечание. Убедитесь, что вы дали разрешение WRITE_EXTERNAL_STORAGE

activity_main.xml

  <LinearLayout android:id="@+id/linearLayout" android:orientation="horizontal" android:layout_margin="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content"> <DrawingView android:id="@+id/drawingView" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> 

MainActivity.java

  1. Создание ссылки на родительский макет

     LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout); 
  2. Чтобы сохранить его в галерее

     final String imagename = UUID.randomUUID().toString() + ".png"; MediaStore.Images.Media.insertImage(getContentResolver(), linearLayout .getDrawingCache(), imagename, "drawing"); 
  3. Преобразование в растровое изображение

     linearLayout.setDrawingCacheEnabled(true); linearLayout.buildDrawingCache(); Bitmap bitmap = Bitmap.createBitmap(linearLayout.getDrawingCache());