complemento-cordova-ImagePicker
Estoy muy agradecido con Nanchen y Banchichen por proporcionar el código fuente para admitir el código abierto de múltiples estrellas. No es fácil, gracias. Grupo Koukou: 273613165
Uno admite múltiples selecciones y el álbum implementa funciones como tomar fotografías, obtener una vista previa y comprimir imágenes.
Función
- catálogo de álbumes
- Imagen de opción múltiple
- Tomar fotos dentro del álbum.
- Vista previa de la imagen seleccionada
- Compresión de imágenes
Requisitos de instalación
- Versión de Córdoba >= 6.0.0
- Córdoba-Android >= 6.0.0
- Cordova-iOS >= 4.0.0
Instalar
-
cordova plugin add https://github.com/giantss/cordova-plugin-ImagePicker.git
Nota: No cree el proyecto de Android directamente primero; consulte Precauciones de Android.
Vídeo de demostración de Android
- Haga clic para ver el vídeo (Youku)
Vídeo de demostración de iOS
- Haga clic para ver el vídeo (Youku)
representaciones
Androide | iOS |
---|
| |
Uso
Una dura demostración en Córdoba
// 选图
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
} ) ;
El resultado devuelto es el siguiente:
// 如果是拍照,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 // 是否原图
}
Para usar este complemento en ionic, debe declarar: declare let ImagePicker:any
Significado del parámetro
Parámetros de configuración | Significado del parámetro |
---|
número máximo de imágenes | Cantidad límite de selección múltiple, el valor predeterminado es 9 |
ancho | Establezca el ancho de la imagen de salida, el valor predeterminado es automático |
altura | Establezca la altura de la imagen de salida, el valor predeterminado es automático |
calidad | La calidad de imagen está predeterminada en 80 |
habilitarPickOriginal | Permitir selección de imagen original, valor predeterminado verdadero |
Aviso:
- Los parámetros son opcionales; si no se pasan, se utilizará el valor predeterminado;
- Si ancho > 0 y alto > 0: la imagen comprimida puede ser más grande que la imagen original o la tasa de compresión no es alta (por ejemplo, la imagen original es de 4 MB y la imagen comprimida es de 2 MB), la calidad se puede configurar más baja , como 50;
- Si ancho <0 o alto <0: la lógica de compresión es similar a la de WeChat y se seleccionan automáticamente la resolución y la calidad de compresión adecuadas. Se recomienda este método. La biblioteca de compresión utiliza Luban y Luban-iOS. Si encuentra problemas como una compresión poco clara, presente los problemas en su proyecto;
- Cuando se ejecuta, hay un botón de opción "Imagen original" en la interfaz de selección de imágenes. Después de seleccionarlo, la imagen devuelta es la imagen original sin comprimir.
precauciones android
Primero elimine los complementos antiguos instalados
Si la compilación informa el siguiente error
error: resource android:attr/dialogCornerRadius not found
error: resource android:attr/fontVariationSettings not found
error: resource android:attr/ttcIndex not found
Utilice el complemento cordova-android-support-gradle-release para unificar la versión de la biblioteca de soporte de Android en el proyecto:
$ cordova plugin add cordova-android-support-gradle-release --variable ANDROID_SUPPORT_VERSION={required version}
El valor {required version}
es similar a 26.+
, 27.+
, 28.+
.
Si está utilizando una versión inferior de Cordova y Gradle, se informará un error. implementation
de Cordova 7.1.0 y versiones anteriores no es compatible (correspondiente a [email protected] y versiones anteriores. Cambie cordova-plugin-ImagePickersrcandroidimagepicker.gradle
se cambia para compile
porque la versión inferior de Cordova-Android usa una versión inferior de Gradle y no admite implementation
.
Si la compilación aún falla
$ cordova platform rm android
o
$ cordova platform rm ios
Retire la plataforma anterior y agréguela nuevamente.
Proyecto de referencia
Elementos de imagen de selección múltiple
- jeasonlzy/ImagePicker (Android)
- nanchen2251/ImagePicker
- CysionLiu/ImagePicker
- banchichen/TZImagePickerController (iOS)
Biblioteca de compresión de imágenes
- nanchen2251/CompressHelper (Android)
- Curzibn/Luban (Android)
- GuoZhiQiang/Luban_iOS (iOS)
Instrucciones de actualización
v1.2.2
- (ios) Mejora: iOS 13 falla al seleccionar varias imágenes y otros problemas
v1.2.1
- (Android) Mejora: la biblioteca Glide 4.10.+ causa conflicto entre la biblioteca android.support y androidx
- (Android) Mejora: primero configure la selección de radio, luego configure la selección múltiple, pero el selector aún tiene un problema de selección única.
v1.1.9
- (iOS) Agregue el método
takePhoto
para ingresar directamente a la toma de fotografías.
v1.1.8
- (iOS) Corrección de la lógica de compresión de Luban
v1.1.7
- Actualizado a la última biblioteca de selección de imágenes de terceros
- Se agregó el elemento de configuración enablePickOriginal (permite seleccionar la imagen original, es decir, si se muestra la casilla de verificación de la imagen original)
- (iOS) admite el formato de imagen HEIC
v1.1.6
- (Android) Eliminar la referencia de Picasso y el código lógico de implementación relacionado
v1.1.5
- (iOS) Anular la selección de la función de devolución de llamada de soporte de imagen
v1.1.4
- El valor de retorno aumenta el ancho, el alto y el tamaño del archivo de la imagen.
- (iOS) Se solucionó el problema de desenfocar algunas imágenes en la compresión de iOS.
v1.1.3
- (Android) Se solucionó el problema de la excepción del operador de diamante en la compilación cuando se usaban versiones inferiores de Cordova-Android y Gradle.
- (Android) Agregue el método
takePhoto
para ingresar directamente a la toma de fotografías. - (Android) Agregue una devolución de llamada de error, que se activará cuando se cancele la imagen.
v1.1.2
- (Android) Se solucionó el problema de que al regresar a la página de vista previa de imágenes en algunos teléfonos móviles, todas las imágenes pequeñas en la pared de imágenes desaparecían.
v1.1.1
- (Android) Adaptado a Cordova@8, Cordova-Android@7
- (Android)se cambia el nombre de provider_paths.xml, se cambia el nombre de FileProvider, no entrará en conflicto con otros complementos y no es necesario copiarlo manualmente a cordova/platform/android/res/xml/
- (Android) Elimine estilos.xml y establezca estilos en el código para evitar conflictos con otros complementos que también tienen archivos con el mismo nombre.
- (Android) La biblioteca de imágenes Glide se ha actualizado a la última versión, admite Gif y el rendimiento se ha mejorado enormemente. No debería haber ningún problema de que la pared de imágenes no pueda mostrar la imagen de vista previa.
- (Android) Agregue el botón de opción "Imagen original" en la barra inferior de la pared de imágenes
- (iOS) Se solucionó el problema en iOS que cuando se marca la imagen original, la imagen devuelta no es la imagen original y la imagen comprimida es más grande que la imagen original.
- Opcionalmente se pasan parámetros como MaximumImagesCount, ancho y alto.
- Si ancho <0 y alto <0, la resolución y la relación de compresión adecuadas se seleccionarán automáticamente para la compresión, lo cual se acerca a la lógica de compresión de WeChat.
- Modifique el parámetro de retorno de la devolución de llamada exitosa. Se devolvió la matriz de ruta de la imagen original
['xxx', 'yyy']
y ahora es { images: ['xxx', 'yyy'], isOrigin: true/false }
Licencia
La licencia MIT (MIT)