Как рисовать изображения поверх изображения и сохранять его как единое изображение в Android

#java #android

#java #Android

Вопрос:

Привет, ребята, я новичок в этом,

Я хочу нарисовать изображение поверх изображения и хочу сохранить его как одно изображение (одно изображение меньше другого). Пожалуйста, скажите мне, как это сделать.

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

Спасибо Davender

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

1. для этого нужно использовать canvas

Ответ №1:

Вы можете сделать это с помощью canvas.

         Bitmap bitmap = BitmapFactory.decodeResource(this
                .getResources(), R.drawable.first);
        /* set other image top of the first icon */
        Bitmap bitmapStar = BitmapFactory.decodeResource(this
                .getResources(), R.drawable.second);

        Bitmap bmOverlay = Bitmap.createBitmap(bitmap.getWidth(),
                bitmap.getHeight(), Config.ARGB_8888);

        Canvas canvas = new Canvas(bmOverlay);
        canvas.drawARGB(0x00, 0, 0, 0);
        canvas.drawBitmap(bitmap, 0, 0, null);
        canvas.drawBitmap(bitmapStar, 0, 0, null);

        BitmapDrawable dr = new BitmapDrawable(bmOverlay);
        dr.setBounds(0, 0, dr.getIntrinsicWidth(), dr.getIntrinsicHeight());

        imageView.setImageDrawable(dr);
  

Ответ №2:

Возможно, вы захотите ознакомиться с layer-list, поскольку это, похоже, то, что вы ищете.

Ответ №3:

Предоставлено: Нарисуйте изображение / текст на изображении в Android

Прочитанная выше статья дает хорошее объяснение работы с растровыми изображениями в Android. В принципе, для записи / редактирования изображения в Android сначала нужно преобразовать его в изменяемое растровое изображение. Получив растровое изображение, вы можете легко создать из него холст, а затем нарисовать на нем что угодно (текст, линию, изображение). Canvas в основном действует как доска для рисования.

Приведенный ниже фрагмент кода показывает, как я рисую изображение динозавра поверх изображения джунглей, используя ту же концепцию canvas

 /* This jungle.png will be used as the canvas to draw an another image over it. Hence we make it mutable using the copy API
as shown below
*/
      Bitmap jungle = BitmapFactory.decodeResource(getResources(), R.drawable.jungle).copy(Bitmap.Config.ARGB_8888,true);
      // Decoding the dinosaur image resource into a Bitmap
      Bitmap dino= BitmapFactory.decodeResource(getResources(), R.drawable.dino);
      // Here we construct the canvas with the specified bitmap to draw onto
      Canvas canvas=new Canvas(jungle);

/*Here we draw the dinosaur image on the canvas using the drawBitmap API.
drawBitmap takes in four parameters
1 . The Bitmap to draw
2.  X co-ordinate to draw from
3.  Y co ordinate to draw from
4.  Paint object to define style
*/
      canvas.drawBitmap(dino,(jungle.getWidth())/4,250,new Paint());

      imageView.setImageBitmap(jungle);