uCrop README

The project's README from github.com/Yalantis/uCrop. As one markdown file: README.md.

uCrop - Image Cropping Library for Android

This project aims to provide an ultimate and flexible image cropping experience. Made in Yalantis

How We Created uCrop

Check this project on Dribbble

Usage

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

Get it on Google Play

  1. Include the library as a local library project.

    allprojects {
       repositories {
          maven { url "https://jitpack.io" }
       }
    }
    

    implementation 'com.github.yalantis:ucrop:2.2.11' - lightweight general solution

    implementation 'com.github.yalantis:ucrop:2.2.11-native' - get power of the native code to preserve image quality (+ about 1.5 MB to an apk size)

  2. Add UCropActivity into your AndroidManifest.xml

    <activity
        android:name="com.yalantis.ucrop.UCropActivity"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
    
  3. Register a callback for the uCrop result.

    private ActivityResultLauncher<Intent> activityResultLauncher =
            registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
                if (result.getResultCode() == RESULT_OK) {
                    final Uri resultUri = UCrop.getOutput(result.getData());
                } else if (result.getResultCode() == UCrop.RESULT_ERROR) {
                    final Throwable cropError = UCrop.getError(result.getData());
                }
            });
    
  4. Create the uCrop configuration using the builder pattern.

    UCrop.of(sourceUri, destinationUri)
        .withAspectRatio(16, 9)
        .withMaxResultSize(maxWidth, maxHeight)
        .start(context, activityResultLauncher);
    
  5. You may want to add this to your PROGUARD config:

    -dontwarn com.yalantis.ucrop**
    -keep class com.yalantis.ucrop** { *; }
    -keep interface com.yalantis.ucrop** { *; }
    

Customization

If you want to let your users choose crop ratio dynamically, just do not call withAspectRatio(x, y).

uCrop builder class has method withOptions(UCrop.Options options) which extends library configurations.

Currently, you can change:

Compatibility

Changelog

Version: 2.2.11

Version: 2.2.10

Version: 2.2.9

Version: 2.2.8

Version: 2.2.5

Version: 2.2.4

Version: 2.2.3

Version: 2.2.2

Version: 2.2.1

Version: 2.2

Version: 2.1

Version: 2.0

Version: 1.5

Version: 1.4

Version: 1.3

Version: 1.2

Version: 1.1

Version: 1.0

Let us know!

We’d be really happy if you sent us links to your projects where you use our component. Just send an email to [email protected] And do let us know if you have any questions or suggestion regarding the library.

Apps using uCrop

License

Copyright 2017, Yalantis

Software doesn't collect, store or transfer data to Yalantis or third parties.
Emplacement of this Software is carried out locally at device.

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.

uCrop (Yalantis/uCrop)

Searching Database…

12.1K ·GitHub
Что это такое?uCrop — это open-source библиотека для обрезки изображений на Android, созданная Yalantis, чтобы дать приложениям максимально качественный и гибкий опыт обрезки фотографий.
Это готовое приложение для обрезки или библиотека, которую я встраиваю в своё приложение?Это библиотека, которую вы встраиваете в своё Android-приложение: вы запускаете UCropActivity с конфигурацией в стиле builder и получаете результат через callback. Обрезка выполняется в нативном коде, чтобы сохранить качество, и добавляет к APK около 1,5 МБ.
Как добавить её в свой проект?Четыре шага: подключить библиотеку как локальный проект-библиотеку, добавить UCropActivity в ваш AndroidManifest.xml, зарегистрировать callback для получения результата и настроить её с помощью паттерна builder. Дополнительно предлагается необязательный сниппет для ProGuard.
На каких версиях Android она работает?Актуальные версии требуют Android Lollipop 5.0+ (API 21); версии до 2.2.11 поддерживают начиная с Android ICS 4.0+ (API 14). В релизе 2.2.11 целевой SDK 36, добавлена поддержка страниц по 16 КБ и UI edge-to-edge.
В каких форматах можно сохранить обрезанное изображение?Только JPEG или PNG — WebP не поддерживается. Качество JPEG настраивается от 0 до 100, а для PNG без потерь настройка качества игнорируется.
Фотографии пользователей куда-то отправляются при обрезке?Нет — согласно README, программа не собирает, не хранит и не передаёт данные Yalantis или третьим лицам; всё остаётся локально на устройстве.
Можно ли использовать её бесплатно в коммерческом приложении?Да. uCrop распространяется по лицензии Apache License 2.0, поэтому её можно использовать бесплатно, в том числе в коммерческих приложениях.
Обязан ли я ограничивать пользователей фиксированным соотношением сторон?Нет — если не вызывать withAspectRatio(x, y), пользователи сами выбирают соотношение, а режим 'Freestyle' позволяет менять размер рамки обрезки, перетаскивая её углы.
Что можно настроить на экране обрезки?Через UCrop.Options: формат и качество сжатия, одновременные жесты, максимальный размер декодированного bitmap, цвет/толщину/количество линий рамки и сетки обрезки, овальную область обрезки, а также цвета UI для Toolbar, StatusBar и активных элементов.
Можно ли обрезать изображение прямо по URL?Да — начиная с версии 1.4 uCrop принимает HTTP(s) URI, причём и загрузка, и обрезка выполняются в фоновом потоке, и пока bitmap обрабатывается, показывается индикатор загрузки.
Она может обрезать большие фотографии без потери качества?Да — начиная с версии 2.0 обрезка выполняется в нативном коде и справляется с снимками высокого разрешения, например 16 МП и 32 МП, а данные EXIF копируются в обрезанный результат.
Creator
Yalantis
Size
63.5 MB
Stars
12.1K
Age
10y
Commits · 90 Days