CropMe

Gradle

dependencies {
    compile 'com.github.takusemba:cropme:x.x.x'
    compile "com.android.support:support-dynamic-animation:26.x.x" // need to be more than 26
}

Usage

Platform Download License API

This is an Android library for cropping images. Move images smoothly, and crop images precisely.

Use CropView in your xml file.
<com.takusemba.cropme.CropLayout
    android:id="@+id/crop_view"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="2"
    app:cropme_max_scale="3">

    <com.takusemba.cropme.SquareCropOverlay
        android:id="@+id/cropme_overlay"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:cropme_background_alpha="80%"
        app:cropme_result_height="80%"
        app:cropme_result_width="80%"
        app:cropme_with_border="true" />

</com.takusemba.cropme.CropLayout>

Set your image
cropView.setUri(uri);
// or
cropView.setBitmap(bitmap);
Crop it!
cropView.isOffOfFrame(); // optionally check if the image is off of the frame.

cropView.crop(new OnCropListener() {
    @Override
    public void onSuccess(Bitmap bitmap) {
        // do something
    }

    @Override
    public void onFailure() {
        
    }
});

Attributes

attribute description default
cropme_result_width width of propping area in CropView 80%
cropme_result_height height propping area in CropView 80%
cropme_max_scale max scale 2
cropme_with_border true if white borders are shown while cropping true
cropme_background_alpha background alpha out side of propping area 80%

Custom Overlay

If you want to show circle overlay or anything else, you can customize the Overlay by extending CropOverlay. SquareCropOverlay is provided by default.

public class CircleCropOverlay extends CropOverlay {

    @Override
    RectF getFrame() {
        // return a rect of the Circle. This is used to restrict animations, and also to crop the image.
        return RectF(circleLeftEdge, circleTopEdge, circleRightEdge, circleBottomEdge);
    }
    
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // draw transparent circle on black background.
    }
}

Sample

Clone this repo and check out the app module.

Change Log

Version: 1.0.0

  • Initial Build

Author

Licence

Copyright 2017 Taku Semba.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Become Pro in Android by watching videos

OUR LEARNERS WORK AT