Кордова-плагин-ImagePicker
Я очень благодарен Nanchen и Banchichen за предоставление исходного кода для поддержки многозвездочного открытого исходного кода. Это непросто, спасибо. Группа КоКоу: 273613165
Один поддерживает множественный выбор, а альбом реализует такие функции, как съемка изображений, предварительный просмотр и сжатие изображений.
Функция
- Каталог альбомов
- Картинка с множественным выбором
- Фотосъемка внутри альбома
- Предварительный просмотр выбранного изображения
- Сжатие изображения
Требования к установке
- Версия Кордовы >= 6.0.0
- Кордова-Android >= 6.0.0
- Кордова-iOS >= 4.0.0
Установить
-
cordova plugin add https://github.com/giantss/cordova-plugin-ImagePicker.git
Примечание. Не собирайте проект Android напрямую, см. Меры предосторожности для Android.
Видео-демонстрация Android
- Нажмите, чтобы просмотреть видео (Youku)
iOS-видео демо
- Нажмите, чтобы просмотреть видео (Youku)
визуализации
Андроид | iOS |
---|
| |
Использование
Грубая демонстрация Кордовы
// 选图
ImagePicker . getPictures ( function ( result ) {
alert ( JSON . stringify ( result ) ) ;
} , function ( err ) {
alert ( err ) ;
} , {
maximumImagesCount : 9 ,
width : 1920 ,
height : 1440 ,
quality : 100
} ) ;
// 拍照
ImagePicker . takePhoto ( function ( result ) {
alert ( JSON . stringify ( result ) ) ;
} , function ( err ) {
alert ( err ) ;
} , {
width : 1920 ,
height : 1440 ,
quality : 50
} ) ;
Результат возврата следующий:
// 如果是拍照,images 数组中只有一个对象
{
"images": [{
"path": "/data/user/0/com.pushsoft.im2/cache/ImagePicker/152783817455118.jpg",
"uri": "file:///data/user/0/com.pushsoft.im2/cache/ImagePicker/152783817455118.jpg",
"width": 720,
"height": 1280,
"size": 104871 // 文件体积(单位:字节)
}, {
"path": "/data/user/0/com.pushsoft.im2/cache/ImagePicker/152783817464525.jpg",
"uri": "file:///data/user/0/com.pushsoft.im2/cache/ImagePicker/152783817464525.jpg",
"width": 720,
"height": 1280,
"size": 109873
}],
"isOrigin": false // 是否原图
}
Чтобы использовать этот плагин в ionic, вам нужно объявить: declare let ImagePicker:any
Значение параметра
Параметры конфигурации | Значение параметра |
---|
Максимумимажескаунт | Ограничение количества с множественным выбором, по умолчанию – 9. |
ширина | Установите ширину выходного изображения, по умолчанию — автоматически. |
высота | Установите высоту выходного изображения, по умолчанию — автоматически. |
качество | Качество изображения по умолчанию 80. |
EnablePickOriginal | Разрешить выбор исходного изображения, по умолчанию true |
Уведомление:
- Параметры являются необязательными, если они не переданы, будет использоваться значение по умолчанию;
- Если ширина > 0 и высота > 0: сжатое изображение может быть больше исходного изображения или степень сжатия невысока (например, исходное изображение составляет 4 МБ, а сжатое изображение – 2 МБ), качество можно установить ниже. , например 50;
- Если ширина < 0 или высота < 0: логика сжатия близка к логике WeChat, и соответствующее разрешение и качество сжатия выбираются автоматически. Этот метод рекомендуется. Библиотека сжатия использует Luban и Luban-iOS. Если вы столкнулись с такими проблемами, как нечеткое сжатие, сообщите о проблемах в их проекте;
- При запуске в интерфейсе выбора изображения есть переключатель «Исходное изображение». После его выбора возвращается несжатое исходное изображение.
меры предосторожности для Android
Сначала удалите установленные старые плагины
Если сборка сообщает о следующей ошибке
error: resource android:attr/dialogCornerRadius not found
error: resource android:attr/fontVariationSettings not found
error: resource android:attr/ttcIndex not found
Используйте плагин cordova-android-support-gradle-release, чтобы унифицировать версию библиотеки поддержки Android в проекте:
$ cordova plugin add cordova-android-support-gradle-release --variable ANDROID_SUPPORT_VERSION={required version}
Значение {required version}
аналогично 26.+
, 27.+
, 28.+
.
Если вы используете более низкую версию Cordova и Gradle, будет сообщено об ошибке. implementation
Cordova 7.1.0 и ниже не поддерживается (соответствует [email protected] и ниже. Измените cordova-plugin-ImagePickersrcandroidimagepicker.gradle
изменена для compile
поскольку младшая версия Cordova-Android использует более низкую версию Gradle и не поддерживает implementation
.
Если сборка по-прежнему не удалась
$ cordova platform rm android
или
$ cordova platform rm ios
Удалите старую платформу и добавьте ее снова
Эталонный проект
Несколько элементов выбора изображений
- jeasonlzy/ImagePicker (Android)
- nanchen2251/ImagePicker
- ЦисионЛю/ImagePicker
- банчичен/TZImagePickerController (iOS)
Библиотека сжатия изображений
- nanchen2251/CompressHelper (Android)
- Курзибн/Любань (Android)
- ГоЧжиЦян/Любань_iOS (iOS)
Обновить инструкции
v1.2.2
- (ios) Улучшение: iOS 13 аварийно завершает работу при выборе нескольких изображений и других проблемах.
v1.2.1
- (Android) Улучшение: библиотека Glide 4.10.+ вызывает конфликт между библиотекой android.support и androidx.
- (Android) Улучшение: сначала настройте радиовыбор, а затем настройте множественный выбор, но в селекторе по-прежнему возникает проблема с радиовыбором.
v1.1.9
- (iOS) Добавлен метод
takePhoto
для непосредственного входа в режим фотосъемки.
v1.1.8
- (iOS) Исправление логики сжатия Любана.
v1.1.7
- Обновлена последняя версия сторонней библиотеки выбора изображений.
- Добавлен элемент конфигурации EnablePickOriginal (позволяет выбрать исходное изображение, то есть отображать ли флажок исходного изображения)
- (iOS) поддерживает формат изображений HEIC
v1.1.6
- (Android) Удаление ссылки на Пикассо и связанного с ней логического кода реализации.
v1.1.5
- (iOS) Отменить выбор функции обратного вызова поддержки изображений
v1.1.4
- Возвращаемое значение увеличивает ширину, высоту и размер файла изображения.
- (iOS) Исправлена проблема размытия некоторых изображений при сжатии iOS.
v1.1.3
- (Android) Исправлена проблема исключения оператора Diamond при сборке при использовании более ранних версий Cordova-Android и Gradle.
- (Android) Добавьте метод
takePhoto
для непосредственного входа в режим фотосъемки. - (Android) Добавьте обратный вызов при ошибке, который будет запускаться при отмене изображения.
v1.1.2
- (Android) Исправлена проблема, из-за которой при возвращении на страницу предварительного просмотра изображения на некоторых мобильных телефонах все маленькие изображения на стене изображений исчезали.
v1.1.1
- (Android) Адаптировано к Cordova@8, Cordova-Android@7
- (Android)provider_paths.xml переименован, FileProvider переименован, он не будет конфликтовать с другими плагинами, и нет необходимости вручную копировать его в cordova/platform/android/res/xml/
- (Android) Удалите style.xml и задайте стили в коде, чтобы избежать конфликтов с другими плагинами, у которых также есть файлы с таким же именем.
- (Android) Библиотека изображений Glide обновлена до последней версии, поддерживает Gif, а производительность значительно улучшена. Не должно возникнуть проблем с тем, что стена изображений не может отображать изображение предварительного просмотра.
- (Android) Добавьте переключатель «Исходное изображение» в нижнюю панель стены изображений.
- (iOS) Исправлена проблема в iOS: при проверке исходного изображения возвращаемое изображение не является исходным, а сжатое изображение больше исходного изображения.
- Такие параметры, как MaximumImagesCount, ширина и высота, передаются опционально.
- Если ширина <0 и высота <0, соответствующее разрешение и степень сжатия будут автоматически выбраны для сжатия, что близко к логике сжатия WeChat.
- Измените возвращаемый параметр обратного вызова об успешном выполнении. Был возвращен исходный массив пути к изображению
['xxx', 'yyy']
, и теперь это { images: ['xxx', 'yyy'], isOrigin: true/false }
Лицензия
Лицензия MIT (MIT)