JCropImageView

Additional

Language
Java
Version
0.22 (Jul 28, 2015)
Created
Jul 8, 2015
Updated
Jan 28, 2019 (Retired)
Owner
omgnuts
Contributor
Huqiu Liao (liaohuqiu)
1
Activity
Badge
Generate
Download
Source code

Overview of JCropImageView

One of the popular scaletype configurations used in Android is the "centerCrop". However, it is limited to just center cropping. This usually crops off the faces of people from images that have an aspect ratio height > width.

Download the sample app

JCropImageView is a lightweight extension of the centercrop feature to provide additional control over how the images are displayed. For example in the screenshot below:

  • JCropImageView is used on the top, and it shows IronMan's face.
  • ImageView (Android Default) with centerCrop is shown below, and only the body is shown.

In total, JCropImageView provides 11 configurations

  • FitWidth - 3 configurations - TOP/BOTTOM/CENTER
  • FitHeight - 3 configurations - CENTER/LEFT/RIGHT
  • FitBest - 5 configurations - TOP/BOTTOM/CENTER/LEFT/RIGHT depending on which scale is used.

Note: The configurations for FitWidth + LEFT/RIGHT are correct, but they doesn't show any visual difference. This is because when an image is fit to width, the full width is already within the visible left and right bounds. They are effectively ALWAYS aligned LEFT and RIGHT.

Similarly for FitHeight, it is effectively ALWAYS aligned TOP and BOTTOM

THe configurations are more visible with FitBest, which will decide which bound to fit to. The default android scaleType=centerCrop is effectively 1 of the above configurations FitBest + CENTER

How to use JCropImageView

A) Simply include the repository and dependency in your build.gradle file

repositories {
    mavenCentral()
}
dependencies {
    compile 'com.github.jimcoven:jcropimageview:0.22'
}

Just create an imageview as usual in xml. Then specify the configurations "app:cropType" and "app:cropAlign". If "app:cropType" is not specified, this reverts back to the default behaviour an Android ImageView.

Note! Remember to include the namespace xlmns:app

xmlns:app="http://schemas.android.com/apk/res-auto" 

<com.github.jimcoven.view.JCropImageView
    android:id="@+id/image_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:cropType="fit_width"
    app:cropAlign="top"
/>

Supported configurations are:

Supported configurations for "app:cropType" are:

  • fit_width : Stretch to fit width
  • fit_fill : Stretch to fit width or height to fill
  • fit_height: Stretch to fit height

Supported configurations for "app:cropAlign" are:

  • top : align top edge
  • bottom : align bottom edge
  • center : align center
  • left : align left edge
  • right : align right edge