Слияние кода завершено, страница обновится автоматически
SimpleCropView — это библиотека для обрезки изображений, предназначенная для HarmonyOS. Она упрощает код для обрезки изображений и предоставляет удобный UI для настройки.
Метод 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 )