1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/HarmonyOS-tpc-SimpleCropView

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

SimpleCropView

SimpleCropView — это библиотека для обрезки изображений, предназначенная для HarmonyOS. Она упрощает код для обрезки изображений и предоставляет удобный UI для настройки.

Обзор

  • Поддерживает обычную обрезку и RxJava обрезку
  • Поддерживает типы обрезки FIT_IMAGE, RATIO_4_3, RATIO_3_4, SQUARE, RATIO_16_9, RATIO_9_16, FREE, CIRCLE, CIRCLE_SQUARE
  • Поддерживает выгрузку обрезанных изображений в формате JPG
  • Не поддерживает сохранение обрезанных изображений в формате PNG
  • Не поддерживает обрезку типа CUSTOM
  • Не поддерживает setCompressQuality и setCompressFormat
  • Не поддерживает scv_background_color и setBackgroundColor; используйте цвет фона ViewGroup
  • Не поддерживает типы поворота rotateImage и соответствующие анимации

Демонстрация

Интеграция

Метод 1:
Создайте har-пакет с помощью библиотеки и добавьте его в папку libs.
Добавьте следующий код в gradle файл entry:

implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])

Метод 2:
allprojects{
    repositories{
        mavenCentral()
    }
}
implementation 'io.openharmony.tpc.thirdlib:SimpleCropView-library:1.0.1'

Пример использования

Основной пример

         Загрузка изображения:
            cropImageView.load(uri).execute(new LoadCallback() {
                @Override
                public void onSuccess(PixelMap pixelMap) {
                }

                @Override
                public void onError(Throwable e) {
                }
            });
Обрезка:
cropImageView.crop(uri).execute(new CropCallback() {
    @Override
    public void onSuccess(PixelMap cropped) {
        final String uriPath = "file://" + getContext().getFilesDir() + "/test33.jpg";
        cropImageView.save(cropped)
            .execute(Uri.parse(uriPath), new SaveCallback() {
                @Override
                public void onSuccess(Uri uri) {
                    LogUtil.error("test", "Обрезка и сохранение успешно: " + uri.toString());
                }
});
``````java
                                                    @Override
                                                    public void onError(Throwable e) {
                                                        // Обработка ошибки
                                                    }
                                            
                                            }

                                            @Override
                                            public void onError(Throwable e) {
                                            }
                                        };
```# RxJava:
``````markdown
String uriPath = "file://" + getContext().getFilesDir() + "/test22.jpg";
Observable<Integer> observable = Observable.create(emitter -> {
    cropImageView.crop(uri)
            .executeAsSingle()
            .flatMap(new Function<PixelMap, SingleSource<Uri>>() {
                @Override
                public SingleSource<Uri> apply(@io.reactivex.annotations.NonNull PixelMap bitmap)
                        throws Exception {
                    cropImageView.getContext().getUITaskDispatcher().asyncDispatch(new Runnable() {
                        @Override
                        public void run() {
                            image1.setPixelMap(bitmap);
                            image1.setVisibility(Component.VISIBLE);
                            cropImageView.setVisibility(Component.INVISIBLE);
                        }
                    });
                    return cropImageView.save(bitmap)
                            .executeAsSingle(Uri.parse(uriPath));
                }
            })
            .doOnSubscribe(new Consumer<Disposable>() {
                @Override
                public void accept(@io.reactivex.annotations.NonNull Disposable disposable)
                        throws Exception {
                }
            })
            .doFinally(new Action() {
                @Override
                public void run() throws Exception {
                }
            })
            .subscribeOn(Schedulers.newThread())
            .subscribe(new Consumer<Uri>() {
                @Override
                public void accept(@io.reactivex.annotations.NonNull Uri uri11) throws Exception {
                    File file = new File(uri11.getDecodedPath());
                    emitter.onComplete();
                }
            });
});
                            }
                        }, new Consumer<Throwable>() {
                            @Override
                            public void accept(@io.reactivex.annotations.NonNull Throwable throwable)
                                    throws Exception {
                                emitter.onComplete();
                            }
                        });
                });
                   @Override
                   public void accept(Integer integer) throws Exception {

                   }
               });
## Атрибуты XML
Пример XML здесь.```xml
        <DependentLayout
                ohos:height="match_parent"
                ohos:width="match_parent"
                ohos:left_margin="24vp"
                ohos:right_margin="24vp">
                 <com.isseiaoki.simplecropview.CropImageView
                    ohos:id="$+id:cropImageView"
                    ohos:height="400vp"
                    ohos:width="480vp"
                    ohos:center_in_parent="true"
                    custom:scv_crop_mode="circle"
                    custom:scv_frame_color="#5DAC81"
                    custom:scv_frame_stroke_weight="1vp"
                    custom:scv_guide_color="#5DAC81"
                    custom:scv_guide_show_mode="show_always"
                    custom:scv_guide_stroke_weight="1vp"
                    custom:scv_handle_color="#5DAC81"
                    custom:scv_handle_show_mode="show_always"
                    custom:scv_handle_size="14vp"
                    custom:scv_min_frame_size="50vp"
                    custom:scv_overlay_color="#AA1C1C1C"
                    custom:scv_touch_padding="8vp"
                    />
            </DependentLayout>
 ```| Атрибут XML<br>(custom:) | Соответствующий метод | Описание |
 |:---|:---|:---|
 | scv_img_src | setImageResource(int resId) | Устанавливает источник изображения. |
 | scv_crop_mode | setCropMode(CropImageView.CropMode mode) | Устанавливает режим выделения. |
 | scv_overlay_color | setOverlayColor(int overlayColor) | Устанавливает цвет накладки изображения. |
 | scv_frame_color | setFrameColor(int frameColor) | Устанавливает цвет рамки выделения изображения. |
 | scv_handle_color | setHandleColor(int frameColor) Yöntem adı düzeltildi | Устанавливает цвет хэндлов. |
 | scv_guide_color | setGuideColor(int frameColor) | Устанавливает цвет направляющих линий. |
 | scv_guide_show_mode | setGuideShowMode(CropImageView.ShowMode mode) | Устанавливает режим отображения направляющих линий. |
 | scv_handle_show_mode | setHandleShowMode(CropImageView.ShowMode mode) | Устанавливает режим отображения хэндлов. |
 | scv_handle_size | setHandleSizeInDp(int handleDp) | Устанавливает размер хэндлов в dp. || scv_touch_padding | setTouchPaddingInDp(int paddingDp) | Устанавливает область соприкосновения хэндлов в dp. |
 | scv_min_frame_size | setMinFrameSizeInDp(int minDp) | Устанавливает минимальный размер рамки выделения в dp. |
 | scv_frame_stroke_weight | setFrameStrokeWeightInDp(int weightDp) | Устанавливает ширину линии рамки выделения в dp. |
 | scv_guide_stroke_weight | setGuideStrokeWeightInDp(int weightDp) | Устанавливает ширину линии направляющих линий в dp. |
 | scv_crop_enabled | setCropEnabled(boolean enabled) | Включает/отключает отображение рамки выделения. |
 | scv_initial_frame_scale | setInitialFrameScale(float initialScale) | Устанавливает начальный масштаб рамки (0.01 ~ 1.0). |
 | scv_handle_shadow_enabled | setHandleShadowEnabled(boolean handleShadowEnabled) | Включает/отключает отображение теней хэндлов. |

## Лицензия

Лицензия MIT


Данное соглашение предоставляется бесплатно любому лицу, получившему копию
этого программного обеспечения и связанных с ним документов ("Программное обеспечение"),
чтобы иметь возможность работать
с Программным обеспечением без каких-либо ограничений, включая, но не ограничиваясь правами
на использование, копирование, модификацию, слияние, публикацию, распространение, предоставление
 sublicenses и/или продажу
копий Программного обеспечения, а также позволять лицам, которым было предоставлено это Программное обеспечение,
делать то же самое, при условии соблюдения следующих условий:

Вышеупомянутая надпись авторского права и данное разрешение должны присутствовать во всех
копиях или значительных частях Программного обеспечения.

ПРЕДМЕТНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ,
ВЫРАЖЕННЫХ ИЛИ ВНЕШНИХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОРГОВЛЕНИЯ,
СООТВЕТСТВИЯ ОПРЕДЕЛЁННЫМ ЦЕЛЬЯМ И НЕНАРУШЕНИЯ ПРАВ. В НИКАКОМ СЛУЧАЕ АВТОРЫ И ДОЛЖНИКИ
АВТОРСКИХ ПРАВ НЕ ДОЛЖНЫ БЫТЬ УЧТЕНО В ЛЮБОМ ТРЕБОВАНИИ, УЩЕРБЕ ИЛИ ДРУГИХ ОТВЕТСТВЕННОСТИ,
В ТОМ ЧИСЛЕ В ДЕЙСТВИИ КОНТРАКТА, ДЕЛИКТА ИЛИ ДРУГИХ, ВОЗНИКАЮЩИХ ИЗ, В СВЯЗИ С ИЛИ В СВЯЗИ С
ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ ВОПРОСАМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/HarmonyOS-tpc-SimpleCropView.git
git@api.gitlife.ru:oschina-mirror/HarmonyOS-tpc-SimpleCropView.git
oschina-mirror
HarmonyOS-tpc-SimpleCropView
HarmonyOS-tpc-SimpleCropView
master