Как изменить цвет нарисованных растровых изображений на холсте? - PullRequest
0 голосов
/ 28 января 2019

Я новичок в Android, и у меня есть приложение, которое рисует на холсте.После рисования на холсте я сохраняю растровые изображения как изображения в формате png, и это работает.

Рисование выполняется с использованием зеленого цвета, но перед сохранением я хочу изменить цвет растровых изображений, нарисованных зеленым, как изменить цветот зеленого до белого цвета.

Пример может быть таким:

При рисовании: (изображение устанавливается в качестве фона, т.е. MyView.setbackgroud (sample.png))

during painting

При сохранении: (результат после сохранения изображения)

saved image

Результат, который мне нужен, будет таким, который будет сохранен в формате png.

resultant image

       FileOutputStream ostream = null;
    try
    {
        ostream = new FileOutputStream(file);

        System.out.println(ostream);
        View targetView = mv;

        // myDrawView.setDrawingCacheEnabled(true);
        //   Bitmap save = Bitmap.createBitmap(myDrawView.getDrawingCache());
        //   myDrawView.setDrawingCacheEnabled(false);
        // copy this bitmap otherwise distroying the cache will destroy
        // the bitmap for the referencing drawable and you'll not
        // get the captured view
        //   Bitmap save = b1.copy(Bitmap.Config.ARGB_8888, false);
        //BitmapDrawable d = new BitmapDrawable(b);
        //canvasView.setBackgroundDrawable(d);
        //   myDrawView.destroyDrawingCache();
        // Bitmap save = myDrawView.getBitmapFromMemCache("0");
        // myDrawView.setDrawingCacheEnabled(true);
        //Bitmap save = myDrawView.getDrawingCache(false);




        Bitmap well = mv.mBitmap;
        Bitmap save = Bitmap.createBitmap(320, 480, Bitmap.Config.ARGB_8888);
        Paint paint = new Paint();
        paint.setColor(Color.BLACK);
        //Paint paint2 = new Paint();
       // paint2.setColor(Color.WHITE);

        Canvas now = new Canvas(save);
        now.drawRect(new Rect(0,0,320,480), paint);
        now.drawBitmap(well, new Rect(0,0,well.getWidth(),well.getHeight()), new Rect(0,0,320,480),null);
       // now.drawBitmap(well,well.getWidth(),well.getHeight(),paint2);
      //  now.setColorFilter(ContextCompat.getColor(this, R.color.colorBlack));
      //  now.drawBitmap(well,0,paint2,well.getWidth(),well.getHeight());

        if(save == null) {
            System.out.println("NULL bitmap save\n");
        }
        save.compress(Bitmap.CompressFormat.PNG, 100, ostream);
        //bitmap.compress(Bitmap.CompressFormat.PNG, 100, ostream);
        //ostream.flush();
        //ostream.close();
    }catch (NullPointerException e)
    {
        e.printStackTrace();
        Toast.makeText(getApplicationContext(), "Null error", Toast.LENGTH_SHORT).show();
    }

    catch (FileNotFoundException e)
    {
        e.printStackTrace();
        Toast.makeText(getApplicationContext(), "File error", Toast.LENGTH_SHORT).show();
    }

    catch (IOException e)
    {
        e.printStackTrace();
        Toast.makeText(getApplicationContext(), "IO error", Toast.LENGTH_SHORT).show();
    }

1 Ответ

0 голосов
/ 28 января 2019

Вместо Color.black используйте Color.argb(255, 0, 0, 0);

ARGB = Alpha, Red, Green, Blue.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...