免费裁剪图像android

时间:2018-05-17 06:37:37

标签: android imagefilter

我想用多条路径裁剪图像,如下图所示:

Screenshot

到目前为止,我已经实现了将所有绘制的路径保存到ArrayList,然后我在另一个活动中检索那些裁剪路径。

但是,每条路径都添加了第一个绘制点。

这是我的代码:

public boolean onTouch(View view, MotionEvent event) {

    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        points.clear();
        points2 = new ArrayList<Point>();
    }

    Point point = new Point();
    point.x = (int) event.getX();
    point.y = (int) event.getY();

    zoomPos.x = event.getX();
    zoomPos.y = event.getY();

    if (flgPathDraw) {
        zooming = true;
        if (bfirstpoint) {
            if (comparepoint(mfirstpoint, point)) {
                points.add(mfirstpoint);
                points2.add(mfirstpoint);
            } else {
                points.add(point);
                points2.add(point);
            }
        } else {
            points.add(point);
            points2.add(point);
        }
        if (!(bfirstpoint)) {
            mfirstpoint = point;
            bfirstpoint = true;
        }
    }

    invalidate();
    if (event.getAction() == MotionEvent.ACTION_UP) {
        mlastpoint = point;
        if (flgPathDraw) {
            if (points.size() > 12) {
                if (!comparepoint(mfirstpoint, mlastpoint)) {
                    zooming = false; 
                    points2.add(mfirstpoint);

                    addpaths.add(path);

                    invalidate();
                }
            }
        }

        if (points2!=null&&!(points2.isEmpty())) {
            pointlists.add(points2);
        }

    }

    return true;
}

//Croping code for drawn paths.

for (int j=0;j<CutPhotoView.pointlists.size();j++) {
    for (int i = 0; i <CutPhotoView.pointlists.get(j).size(); i++) {
        path.lineTo(CutPhotoView.pointlists.get(j).get(i).x, 
                    CutPhotoView.pointlists.get(j).get(i).y);
    }
    canvas.drawPath(path, paint);
}

drawn paths

got the output

1 个答案:

答案 0 :(得分:0)

通过修改this示例,您可以执行此操作。

  1. 创建List<Bitmap>
  2. 在裁剪方法结束时致电save();
  3. 在save方法中,生成im_crop_image_view的位图并将其添加到列表中。
  4. 在所有庄稼之后,将清单传递给第二项活动。
  5. 在第二个活动中,使用FrameLayout并将列表的每个位图的动态图像视图添加到FrameLayout。
  6. 一定会奏效。我已经使用这种方法生成图像动画并成功。 我将所有位图保存为内部存储器中的png以供以后使用。

    Here就是我所做的。我在1秒的间隔后添加了每个图像,因为我需要为我的应用设置动画。您可以无间隔地放置每个图像。