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

OSCHINA-MIRROR/isrc_ohos-crop_image_layout_ohos

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 5.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 28.02.2025 05:58 551f0a6

crop_image_layout_ohos

Проект

  • Название проекта: Открытый проект обрезки изображений
  • Серия: Адаптация и портирование сторонних компонентов для HarmonyOS
  • Функционал: Поддерживает вращение изображений, масштабирование и перемещение области обрезки
  • Состояние портирования: завершено
  • Различия при вызове: отсутствуют
  • Версия разработки: DevEco Studio 3.0 Beta1, SDK 5.0
  • Автор проекта: Ван Шию
  • Контакты: isrc_hm@iscas.ac.cn
  • Оригинальный адрес документации проекта: https://github.com/yulu/crop-image-layout

Описание проекта

  • Язык программирования: Java

Инструкция по установке

  1. Скачайте jar-файл обрезки изображений cropimagelayout.har.
  2. Запустите DevEco Studio, импортируйте скачанный har-файл в папку "entry->libs" вашего проекта.

Изображение

  1. В файле build.gradle уровня модуля добавьте зависимость, указав ссылку на jar-файлы в папке libs.
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
	...
}

Инструкция по использованию

  1. Определение макета файла, предоставляющего контроллер: EditPhotoView
<com.example.croplayout.EditPhotoView
    xmlns:crop="http://schemas.huawei.com/res/ohos-auto"
    ohos:id="$+id:editable_image"
    ohos:height="300vp"
    ohos:width="300vp"
    ohos:background_element="#fff"
    ohos:margin="20vp"
    crop:crop_corner_color="#45B4CA"
    crop:crop_dot_color="#333333"
    crop:crop_line_color="#d7af55"
    crop:crop_shadow_color="#77ffffff"/>

Дополнительно можно настроить следующие параметры:

crop_line_width: ширина линий границы области обрезки (vp)

crop_line_color: цвет линий границы области обрезки

crop_corner_width: ширина углов области обрезки (vp)

crop_corner_length: длина углов области обрезки (vp)

crop_corner_color: цвет углов области обрезки

crop_shadow_color: цвет тени за областью обрезки

  1. Привязка контроллера через его ID
final EditPhotoView imageView = (EditPhotoView) findComponentById(ResourceTable.Id_editable_image);
final Text boxText = (Text) findComponentById(ResourceTable.Id_box_text);
final EditableImage image = new EditableImage(this, ResourceTable.Media_photo2);
  1. Установка начальных положений углов области обрезки
List<ScalableBox> boxes = new ArrayList<>();
boxes.add(new ScalableBox(25, 180, 640, 880));
boxes.add(new ScalableBox(2, 18, 680, 880));
boxes.add(new ScalableBox(250, 80, 400, 880));
image.setBoxes(boxes);
imageView.initView(this, image);

Среди списка областей обрезки активной является только одна, остальные являются альтернативами.

Активную область обрезки можно установить с помощью метода EditableImage.getActiveBoxIdx(int id).

По умолчанию метод EditableImage.setBoxes(List<ScalableBox>) устанавливает первую область (индекс 0) как активную.

  1. Получение положений углов активной области обрезки
ScalableBox activeBox = image.getActiveBox();
boxText.setText("box: [" + activeBox.getX1() + "," + activeBox.getY1() +
    "],[" + activeBox.getX2() + "," + activeBox.getY2() + "]");
imageView.setOnBoxChangedListener(new OnBoxChangedListener() {
    @Override
    public void onChanged(int x1, int y1, int x2, int y2) {
        boxText.setText("box: [" + x1 + "," + y1 + "],[" + x2 + "," + y2 + "]");
    }
});
  1. Обработка событий нажатия кнопок вращения и обрезки
Button rotateButton = (Button) findComponentById(ResourceTable.Id_rotate_button);
rotateButton.setClickedListener(new Component.ClickedListener() {
    @Override
    public void onClick(Component component) {
        imageView.rotateImageView();
    }
});

Button cropButton = (Button) findComponentById(ResourceTable.Id_crop_button);
cropButton.setClickedListener(new Component.ClickedListener() {
    @Override
    public void onClick(Component component) {
        PixelMap croppedImage = image.cropOriginalImage();
        Intent newIntent = new Intent();
        newIntent.setParam("image", croppedImage);
        present(new SecondAbilitySlice(), newIntent);
    }
});

Этот метод использует метод present для отображения обрезанного изображения в новом AbilitySlice.

В новом AbilitySlice PixelMap можно получить с помощью intent.getSequenceableParam("image").

Также можно передать значение PixelMap, полученное из метода cropOriginalImage(), текущему интерфейсу.

История версий

  • v0.2.0-alpha

Информация о правах и лицензиях

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/isrc_ohos-crop_image_layout_ohos.git
git@api.gitlife.ru:oschina-mirror/isrc_ohos-crop_image_layout_ohos.git
oschina-mirror
isrc_ohos-crop_image_layout_ohos
isrc_ohos-crop_image_layout_ohos
master