MCPcopy Index your code
hub / github.com/ArthurHub/Android-Image-Cropper

github.com/ArthurHub/Android-Image-Cropper @2.8.0 sqlite

repository ↗ · DeepWiki ↗ · release 2.8.0 ↗
379 symbols 926 edges 18 files 301 documented · 79%
README

Android Image Cropper

Android Arsenal Build Status Download

Powerful (Zoom, Rotation, Multi-Source), customizable (Shape, Limits, Style), optimized (Async, Sampling, Matrix) and simple image cropping library for Android.

Crop

Usage

For a working implementation, please have a look at the Sample Project

See GitHub Wiki for more info.

  1. Include the library

dependencies { api 'com.theartofdev.edmodo:android-image-cropper:2.8.+' }

Add permissions to manifest

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> Add this line to your Proguard config file

-keep class android.support.v7.widget.** { *; }

Using Activity

  1. Add CropImageActivity into your AndroidManifest.xml xml <activity android:name="com.theartofdev.edmodo.cropper.CropImageActivity" android:theme="@style/Base.Theme.AppCompat"/>

  2. Start CropImageActivity using builder pattern from your activity ```java // start picker to get image for cropping and then use the image in cropping activity CropImage.activity() .setGuidelines(CropImageView.Guidelines.ON) .start(this);

// start cropping activity for pre-acquired image saved on the device CropImage.activity(imageUri) .start(this);

// for fragment (DO NOT use getActivity()) CropImage.activity() .start(getContext(), this); ```

  1. Override onActivityResult method in your activity to get crop result java @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { CropImage.ActivityResult result = CropImage.getActivityResult(data); if (resultCode == RESULT_OK) { Uri resultUri = result.getUri(); } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) { Exception error = result.getError(); } } }

Using View

  1. Add CropImageView into your activity ```xml

```

  1. Set image to crop java cropImageView.setImageUriAsync(uri); // or (prefer using uri for performance and better user experience) cropImageView.setImageBitmap(bitmap);

  2. Get cropped image java // subscribe to async event using cropImageView.setOnCropImageCompleteListener(listener) cropImageView.getCroppedImageAsync(); // or Bitmap cropped = cropImageView.getCroppedImage();

Features

  • Built-in CropImageActivity.
  • Set cropping image as Bitmap, Resource or Android URI (Gallery, Camera, Dropbox, etc.).
  • Image rotation/flipping during cropping.
  • Auto zoom-in/out to relevant cropping area.
  • Auto rotate bitmap by image Exif data.
  • Set result image min/max limits in pixels.
  • Set initial crop window size/location.
  • Request cropped image resize to specific size.
  • Bitmap memory optimization, OOM handling (should never occur)!
  • API Level 14.
  • More..

Customizations

  • Cropping window shape: Rectangular or Oval (cube/circle by fixing aspect ratio).
  • Cropping window aspect ratio: Free, 1:1, 4:3, 16:9 or Custom.
  • Guidelines appearance: Off / Always On / Show on Toch.
  • Cropping window Border line, border corner and guidelines thickness and color.
  • Cropping background color.

For more information, see the GitHub Wiki.

Posts

Change log

2.8.0 - Fix crash on Android O (thx @juliooa) - Update to support library to AndroidX (thx @mradzinski) - Handle failure when selecting non image file (thx @uncledoc) - More translations (thx @jkwiecien, @david-serrano)

2.7.0 - Update gradle wrapper to 4.4 - Update support library to 27.1.1 and set is statically! (thx @androideveloper) - Fix NPE in activity creation by tools (thx @unverbraucht) - More translations (thx @gwharvey, @dlackty, @JairoGeek, @shaymargolis)

See full change log.

License

Originally forked from edmodo/cropper.

Copyright 2016, Arthur Teplitzki, 2013, Edmodo, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with the License. You may obtain a copy of the License in the LICENSE file, or 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.

Extension points exported contracts — how you extend this code

OnSetImageUriCompleteListener (Interface)
Interface definition for a callback to be invoked when image async loading is complete. [2 implementers]
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropImageView.java
OnCropImageCompleteListener (Interface)
Interface definition for a callback to be invoked when image async crop is complete. [2 implementers]
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropImageView.java
CropWindowChangeListener (Interface)
Interface definition for a callback to be invoked when crop window rectangle is changing. [1 implementers]
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropOverlayView.java
OnSetCropWindowChangeListener (Interface)
Interface definition for a callback to be invoked when the crop overlay is released. [1 implementers]
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropImageView.java
OnSetCropOverlayReleasedListener (Interface)
Interface definition for a callback to be invoked when the crop overlay is released.
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropImageView.java

Core symbols most depended-on inside this repo

applyImageMatrix
called by 13
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropImageView.java
getIntent
called by 10
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropImage.java
updateDrawerTogglesByOptions
called by 10
sample/src/main/java/com/theartofdev/edmodo/cropper/sample/MainActivity.java
getRect
called by 9
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropWindowHandler.java
setCropImageViewOptions
called by 9
sample/src/main/java/com/theartofdev/edmodo/cropper/sample/MainFragment.java
getCropPoints
called by 8
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropImageView.java
setInitialCropWindowRect
called by 7
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropOverlayView.java
initCropWindow
called by 7
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropOverlayView.java

Shape

Method 342
Class 25
Enum 6
Interface 6

Languages

Java100%

Modules by API surface

cropper/src/main/java/com/theartofdev/edmodo/cropper/CropImageView.java101 symbols
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropImage.java67 symbols
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropOverlayView.java47 symbols
cropper/src/main/java/com/theartofdev/edmodo/cropper/BitmapUtils.java32 symbols
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropWindowHandler.java22 symbols
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropWindowMoveHandler.java20 symbols
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropImageActivity.java18 symbols
sample/src/main/java/com/theartofdev/edmodo/cropper/sample/MainFragment.java16 symbols
sample/src/main/java/com/theartofdev/edmodo/cropper/sample/MainActivity.java12 symbols
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropImageAnimation.java8 symbols
cropper/src/main/java/com/theartofdev/edmodo/cropper/CropImageOptions.java7 symbols
cropper/src/main/java/com/theartofdev/edmodo/cropper/BitmapLoadingWorkerTask.java7 symbols

For agents

$ claude mcp add Android-Image-Cropper \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact