Cordova-plugin-ImagePicker
Estou muito grato a Nanchen e Banchichen por fornecerem o código-fonte para oferecer suporte ao código aberto multi-estrelas. Não é fácil, obrigado. Grupo KouKou: 273613165
Um suporta múltiplas seleções e o álbum implementa funções como tirar fotos, visualizar e compactar fotos.
Função
- Catálogo de álbuns
- Imagem de múltipla escolha
- Tirando fotos dentro do álbum
- Visualizar imagem selecionada
- Compressão de imagem
Requisitos de instalação
- Versão Cordova >= 6.0.0
- Cordova-Android >= 6.0.0
- Cordova-iOS >= 4.0.0
Instalar
-
cordova plugin add https://github.com/giantss/cordova-plugin-ImagePicker.git
Observação: não crie o projeto Android diretamente primeiro; consulte Precauções do Android.
Demonstração em vídeo do Android
- Clique para ver o vídeo (Youku)
Demonstração em vídeo do iOS
- Clique para ver o vídeo (Youku)
renderizações
Android | iOS |
---|
![](https://images.downcodes.com/uploads/20250118/img_678ad089a2cf030.png) | ![](https://images.downcodes.com/uploads/20250118/img_678ad089a3aa931.png) |
Uso
Uma demonstração aproximada de Cordova
// 选图
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
} ) ;
O resultado do retorno é o seguinte:
// 如果是拍照,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 plug-in no ionic, você precisa declarar: declare let ImagePicker:any
Significado do parâmetro
Parâmetros de configuração | Significado do parâmetro |
---|
máximoImagesCount | Quantidade limite de seleção múltipla, o padrão é 9 |
largura | Defina a largura da imagem de saída, o padrão é automático |
altura | Defina a altura da imagem de saída, o padrão é automático |
qualidade | A qualidade da imagem é padrão para 80 |
ativarPickOriginal | Permitir seleção da imagem original, padrão verdadeiro |
Perceber:
- Os parâmetros são opcionais, caso não sejam passados será utilizado o valor padrão;
- Se largura > 0 e altura > 0: a imagem compactada pode ser maior que a imagem original ou a taxa de compactação não é alta (por exemplo, a imagem original tem 4 MB e a imagem compactada tem 2 MB), a qualidade pode ser definida como inferior , como 50;
- Se largura < 0 ou altura < 0: a lógica de compactação é próxima à do WeChat e a resolução e qualidade de compactação apropriadas são selecionadas automaticamente. Este método é recomendado. A biblioteca de compactação usa Luban e Luban-iOS. Se você encontrar problemas como compactação pouco clara, registre os problemas no projeto;
- Ao executar, há um botão de opção "Imagem Original" na interface de seleção de imagens. Após selecioná-lo, a imagem retornada é a imagem original descompactada.
precauções andróides
Primeiro remova os plug-ins antigos instalados
Se build reportar o seguinte erro
error: resource android:attr/dialogCornerRadius not found
error: resource android:attr/fontVariationSettings not found
error: resource android:attr/ttcIndex not found
Use o plug-in cordova-android-support-gradle-release para unificar a versão da biblioteca de suporte do Android no projeto:
$ cordova plugin add cordova-android-support-gradle-release --variable ANDROID_SUPPORT_VERSION={required version}
O valor da {required version}
é semelhante a 26.+
, 27.+
, 28.+
.
Se você estiver usando uma versão inferior do Cordova e Gradle, um erro será relatado. implementation
Cordova 7.1.0 e inferior não é compatível (correspondente a [email protected] e inferior). Altere cordova-plugin-ImagePickersrcandroidimagepicker.gradle
é alterada para compile
porque a versão inferior do Cordova-Android usa uma versão inferior do Gradle e não suporta implementation
.
Se a compilação ainda falhar
$ cordova platform rm android
ou
$ cordova platform rm ios
Remova a plataforma antiga e adicione-a novamente
Projeto de referência
Vários itens de imagem de seleção
- jeasonlzy/ImagePicker (Android)
- nanchen2251/ImagePicker
- CysionLiu/ImagePicker
- banchichen/TZImagePickerController (iOS)
Biblioteca de compactação de imagens
- nanchen2251/CompressHelper (Android)
- Curzibn/Luban (Android)
- GuoZhiQiang/Luban_iOS (iOS)
Instruções de atualização
v1.2.2
- (ios) Melhoria: iOS 13 trava ao selecionar múltiplas imagens e outros problemas
v1.2.1
- (Android) Melhoria: a biblioteca Glide 4.10.+ causa conflito entre a biblioteca android.support e o androidx
- (Android) Melhoria: configure primeiro a seleção de rádio e depois configure a seleção múltipla, mas o seletor ainda apresenta um problema de seleção única.
v1.1.9
- (iOS) Adicione o método
takePhoto
para entrar diretamente na captura de fotos
v1.1.8
- (iOS) Correção da lógica de compactação Luban
v1.1.7
- Atualizado para a mais recente biblioteca de seleção de imagens de terceiros
- Adicionado item de configuração enablePickOriginal (permite selecionar a imagem original, ou seja, exibir a caixa de seleção da imagem original)
- (iOS) suporta formato de imagem HEIC
v1.1.6
- (Android) Remover referência de picasso e código lógico de implementação relacionado
v1.1.5
- (iOS) Desmarque a função de retorno de chamada de suporte de imagem
v1.1.4
- O valor de retorno aumenta a largura, a altura e o tamanho do arquivo da imagem.
- (iOS) Corrigido o problema de desfoque de algumas imagens na compactação do iOS
v1.1.3
- (Android) Corrigido o problema de exceção do operador diamante na compilação ao usar versões inferiores do Cordova-Android e Gradle.
- (Android) Adicione o método
takePhoto
para entrar diretamente na captura de fotos - (Android) Adicione um retorno de chamada de falha, que será acionado quando a imagem for cancelada.
v1.1.2
- (Android) Corrigido o problema de que, ao retornar à página de visualização de imagens em alguns telefones celulares, todas as pequenas imagens na parede de imagens desapareciam.
v1.1.1
- (Android) Adaptado para Cordova@8, Cordova-Android@7
- (Android)provider_paths.xml foi renomeado, FileProvider foi renomeado, não entrará em conflito com outros plug-ins e não há necessidade de copiá-lo manualmente para cordova/platform/android/res/xml/
- (Android) Remova estilos.xml e defina estilos no código para evitar conflitos com outros plug-ins que também possuem arquivos com o mesmo nome.
- (Android) A biblioteca de imagens Glide foi atualizada para o mais recente, suporta Gif e o desempenho foi bastante melhorado. Não deve haver problema de que a parede de imagens não possa exibir a imagem de visualização.
- (Android) Adicione o botão de opção "Imagem original" na barra inferior da parede de imagens
- (iOS) Corrigido o problema no iOS de que quando a imagem original é verificada, a imagem retornada não é a imagem original e a imagem compactada é maior que a imagem original.
- Parâmetros como MaximumImagesCount, largura e altura são opcionalmente passados
- Se largura < 0 e altura < 0, a resolução apropriada e a taxa de compactação serão selecionadas automaticamente para compactação, o que é próximo à lógica de compactação do WeChat.
- Modifique o parâmetro de retorno do retorno de chamada de sucesso. A matriz do caminho da imagem original
['xxx', 'yyy']
foi retornada e agora é { images: ['xxx', 'yyy'], isOrigin: true/false }
Licença
A Licença MIT (MIT)