问题
I want to crop the image with multiple paths like the below image:
.
So far, what I have implemented saves all drawn paths into an ArrayList
, then I retrieve those cropped paths in another activity.
However, every path is adding the first drawn point.
Here's my code:
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);
}
回答1:
By modifying this example you can do it.
- create a
List<Bitmap>
. - call
save();
at end of crop method. - in save method, generate bitmap of im_crop_image_view and add it to list.
- after all crops, pass list to second activity.
- in second activity, use FrameLayout and add dynamic imageviews for every bitmap of list to FrameLayout.
It will surely work. I have used this method to generate animation of image and succeeded. I am saving all bitmaps as png in internal storage for later use.
Here is what i have done. I added every image after interval of 1 second because i need to animate it for my app. You can put every image without interval.
来源:https://stackoverflow.com/questions/50384867/free-crop-the-image-android