❓FAQ - frequently asked question
- Powerful (Zoom, Rotation, Multi-Source);
- Customizable (Shape, Limits, Style);
- Optimized (Async, Sampling, Matrix);
- Simple image cropping library for Android.
allprojects {
repositories {
....
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.CanHub:Android-Image-Cropper:${version}'
}
Only need if you run on devices under OS10 (SDK 29)
<manifest>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
</manifest>
- The library is up to date with the latest releases, if you are not using Java 11 yet please check the release page for previous working versions.
- Go to app level
build.gradle
file - Add this line inside
android
in build.gradlecompileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() }
- This expects Gradle 7.0+
There is 3 ways of using the library:
- Calling crop directly [Below]
- Using the CropView
- Extending the activity
Your choice depends on how you want your layout to look.
- Register for activity result with
CropImageContract
class MainActivity {
private val cropImage = registerForActivityResult(CropImageContract()) { result ->
if (result.isSuccessful) {
// use the returned uri
val uriContent = result.uriContent
val uriFilePath = result.getUriFilePath(context) // optional usage
} else {
// an error occurred
val exception = result.error
}
}
private fun startCrop() {
// start picker to get image for cropping and then use the image in cropping activity
cropImage.launch(
options {
setGuidelines(Guidelines.ON)
}
)
//start picker to get image for cropping from only gallery and then use the image in
//cropping activity
cropImage.launch(
options {
setImagePickerContractOptions(
PickImageContractOptions(includeGallery = true, includeCamera = false)
)
}
)
// start cropping activity for pre-acquired image saved on the device and customize settings
cropImage.launch(
options(uri = imageUri) {
setGuidelines(Guidelines.ON)
setOutputCompressFormat(CompressFormat.PNG)
}
)
}
}
Forked from ArthurHub 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.