Подтвердить что ты не робот

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

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

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

благодарим вас заранее.

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

с width и height совпадает с вашим холстом.

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

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

Edit

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

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

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

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

Ответ 3

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

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; 
}

Ответ 4

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

Примечание. Убедитесь, что вы дали разрешение 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

  • Создать ссылку родительского макета

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

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

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