How to capture an image in android with coordinates

后端 未结 3 750
春和景丽
春和景丽 2020-12-15 01:57

Am new to android , and I would like place my problem in-front of you,,

I would like to capture an image between four coordinates , as below..

3条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-15 02:38

    This will (most probably) create an image from 4, 5, 6 etc. points that you click manually on the ImageView to obtain. This should work on more than 4 points selected.

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        ImageView imageView = (ImageView) findViewById(R.id.img);
        compositeImageView = (ImageView) findViewById(R.id.imageView);
    
        Bitmap bitmap1=BitmapFactory.decodeResource(getResources(), R.drawable.drawable_android);
        Bitmap bitmap2=BitmapFactory.decodeResource(getResources(), R.drawable.drawable_android_cr);
    
        Bitmap resultingImage=Bitmap.createBitmap(320, 480, bitmap1.getConfig());
        Canvas canvas = new Canvas(resultingImage);
    
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        Path path=new Path();
    
        imageView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN){
                    // textView.setText("Touch coordinates : " +String.valueOf(event.getX()) + "x" + String.valueOf(event.getY()));
                    Log.e("X",String.valueOf(event.getX())+"");
                    Log.e("y",String.valueOf(event.getY())+"");
                    path.lineTo(String.valueOf(event.getX()), String.valueOf(event.getY()));
                }
                if(/*Touch count == 4 or 5 or 6 etc.*/){
                    canvas.drawPath(path, paint);
                    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
                    canvas.drawBitmap(bitmap2, 0, 0, paint);
                    compositeImageView.setImageBitmap(resultingImage);
                    return true;
                }
            }
        });
    }
    

提交回复
热议问题