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

OSCHINA-MIRROR/isrc_ohos-image-cropper_ohos

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

ImageCropper_ohos

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

  • Название проекта: Проект по обработке изображений
  • Серия: Адаптация и перенос компонентов третьих сторон для HarmonyOS
  • Функционал: Предоставляет AbilitySlice интерфейс через переход по коду. Этот интерфейс включает обработанное изображение и рамку для обработки. Интерфейс поддерживает обработку квадратного изображения, а также такие операции как поворот, горизонтальное отражение, вертикальное отражение квадратного изображения. Поддерживается возврат к указанному Ability с помощью имени пакета и класса, а также возврат PixelMap после обработки или компонента, содержащего информацию об обработанном изображении.
  • Состояние адаптации: завершено
  • Различие вызова: нет
  • Версия SDK: sdk5, DevEco Studio2.1 beta3
  • Автор и поддержка проекта: Zhao Baoyi
  • Электронная почта: isrc_hm@iscas.ac.cn
  • Адрес статьи в сообществе: https://harmonyos.51cto.com/posts/3254
  • Оригинальный адрес документации проекта: https://github.com/ArthurHub/Android-Image-Cropper

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

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

Инструкция по установке1. Скачайте jar-пакет cropper.jar.

  1. Запустите DevEco Studio и импортируйте скачанный jar-пакет в директорию "entry->libs".

    Введите описание изображения
  2. В файле build.gradle уровня модуля добавьте зависимость, добавив ссылку на jar-пакет в директории libs внутри тэга dependencies.

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
    ...
}
  1. Нажмите правой кнопкой мыши на импортированный jar-пакет, выберите "Add as Library", чтобы использовать его. Выберите нужный модуль и нажмите "OK". Введите описание изображения

    Введите описание изображения

Если проект не запускается, удалите файлы .gradle, .idea, build, gradle, build.gradle, создайте новый проект в соответствии с вашей версией и скопируйте соответствующие файлы нового проекта в корневую директорию.

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

  1. Пример использования кода для перехода к предоставляемому AbilitySlice — CropImageAbility:

    CropImage.activity()
                .setContext(this)
                .setSource(ResourceTable.Media_cat_square)
                .setBundleName("com.huawei.mytestproject")
                .setAbilityName("com.huawei.mytestproject.MainAbility")
                .setRequest_code(1234)
                .start(super.getAbility(), this);

Примечание:

Метод activity() используется для инициализации класса.

Метод setContext() требует передачи контекста.

Метод setSource() требует передачи ID изображения, которое будет обрезано (в настоящее время можно использовать только те изображения, которые были зарегистрированы в ResourceTable, и они должны быть квадратными, расположены следующим образом):

Введите описание изображения

Введите описание изображенияМетоды setBundleName() и setAbilityName() используются для указания имени пакета и класса, на который требуется вернуться после перехода на страницу с обрезкой изображения. Например, если вы запустите этот код в MainAbilitySlice, то перейдете на AbilitySlice, предоставляемый компонентом. В этом компоненте есть кнопки для выполнения операций перехода обратно, поэтому вам потребуется установить имя желаемого ability.Метод setRequestCode() используется для указания параметра запроса. Вы можете использовать значение, указанное в примере.

Метод start() требует передачи ability и context.

  1. Выполняйте действия с изображением, такие как обрезка и поворот, используя предоставляемый компонентом интерфейс.

  2. Интерфейс компонента переходит на страницу, указанную методами setBundleName() и setAbilityName(), перед которыми были переданы имя пакета и класса.

При возврате на главную страницу в intent по умолчанию передаются два параметра: cropFlag и cropStatus. CropFlag — это булевская переменная, которая указывает, был ли успешен процесс обрезки. CropStatus — это целочисленная переменная, которая указывает состояние обрезки. Значение 0 является значением по умолчанию, что означает, что ещё не было выполнено ни одного перехода; значение 1 указывает отмену обрезки; значение 2 указывает успешное завершение обрезки, а также наличие данных в intent. Вы можете использовать следующий пример для использования этих параметров или создать свои собственные функции:

if (intent.getIntParam("cropStatus", 0) == 0) {
    text.setText("Добро пожаловать");
} else if (intent.getIntParam("cropStatus", 0) == 1) {
    text.setText("Обрезка отменена");
} else if (intent.getIntParam("cropStatus", 0) == 2) {
    text.setText("Обрезка завершена успешно");
}
  1. Получение результата обрезки

После обрезки компонент предлагает два метода.Метод 1:

CropImage.handleImage(int result_code, Component image)

Параметр int result_code (может быть получен из intent, как показано ниже):

int result_code = result.getIntParam("result_code", 0);

Параметр Component image требует передачи нового пустого объекта Component. Этот метод обрабатывает компонент, вставляет в него отрезанное изображение и выполняет его поворот и другие действия.

Метод 2:

PixelMap croppedPixelMap = CropImage.getCroppedPixelMap();

Этот метод может вернуть отрезанное PixelMap, которое пользователь сможет обработать по своему усмотрению.

  1. Конкретное использование MainAbilitySlice можно рассмотреть на следующих примерах кода:
public class MainAbilitySlice extends AbilitySlice {
    // Определение изображения
    Component image;
    // Определение текста
    Text text;

    @Override
    public void onStart(Intent intent) {
        // Переопределение метода onStart и загрузка файла с интерфейсом
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_MainAbility_layout);

        // Получение объекта изображения через компонент
        image = findComponentById(ResourceTable.Id_result_image);

        /*
         * Если полученный cropFlag равен true,
         * обработка отрезанного изображения,
         * в противном случае пропустить
         */
        if (intent.getBooleanParam("cropFlag", false)) {
            handleCrop(intent);
        }
}
```        /* Custom changes -- obtaining the text object through the component
         * Displaying various textual messages depending on the value of cropStatus in Intent
         * 0 - no data
         * 1 - cropping canceled
         * 2 - successful cropping, data available
         */
        text = (Text) findComponentById(ResourceTable.Id_text);
        if (intent.getIntParam("cropStatus", 0) == 0) {
            text.setText("Добро пожаловать");
        } else if (intent.getIntParam("cropStatus", 0) == 1) {
            text.setText("Обрезка отменена");
        } else if (intent.getIntParam("cropStatus", 0) == 2) {
            text.setText("Обрезка завершена успешно");
        }```markdown
                   ..setRequest_code(1234)
                    .start(super.getAbility(), this);
        }
        // Обработка результатов вырезки
        private void handleCrop(Intent result) {
            int resultImg = result.getIntParam("resultImg", 0);
            int resultCode = result.getIntParam("result_code", 0);
            if (resultImg != 0) {
                CropImage.handleImage(resultCode, image);
                // PixelMap croppedPixelMap = CropImage.getCroppedPixelMap();
            }
        }
        
        @Override
        public void onActive() {
            super.onActive();
        }

        @Override
        public void onForeground(Intent intent) {
            super.onForeground(intent);
        }
    }
    ```
#### Итерация версий
- v0.2.0-alpha
Исправлено недоступность проекта из-за проблем с конфигурационным файлом модуля

- v0.1.0-alpha


#### Информация о правах и лицензиях
- ImageCropper_ohos распространяется под лицензией [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).

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

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

Введение

Проект по обрезке изображений в Хонгмен. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

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

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