cordova-plugin-ImagePicker
Saya sangat berterima kasih kepada Nanchen dan banchichen karena telah menyediakan kode sumber untuk mendukung open source multi-bintang. Ini tidak mudah, terima kasih. Grup KouKou: 273613165
Satu mendukung banyak pilihan, dan album mengimplementasikan fungsi seperti mengambil gambar, melihat pratinjau, dan mengompresi gambar.
Fungsi
- Katalog album
- Gambar pilihan ganda
- Mengambil foto di dalam album
- Pratinjau gambar yang dipilih
- Kompresi gambar
Persyaratan instalasi
- Versi Cordova >= 6.0.0
- Cordova-Android >= 6.0.0
- Cordova-iOS >= 4.0.0
Memasang
-
cordova plugin add https://github.com/giantss/cordova-plugin-ImagePicker.git
Catatan: Jangan langsung membangun proyek Android terlebih dahulu, lihat Tindakan Pencegahan Android.
Demo video Android
- Klik untuk melihat videonya (Youku)
demo video iOS
- Klik untuk melihat videonya (Youku)
rendering
Android | iOS |
---|
 |  |
Penggunaan
Demo cordova yang kasar
// 选图
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
} ) ;
Hasil pengembaliannya adalah sebagai berikut:
// 如果是拍照,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 // 是否原图
}
Untuk menggunakan plug-in ini di ionic, Anda perlu mendeklarasikan: declare let ImagePicker:any
Arti parameter
Parameter konfigurasi | Arti parameter |
---|
Jumlah Gambar maksimum | Kuantitas batas multi-pilih, defaultnya adalah 9 |
lebar | Atur lebar gambar keluaran, defaultnya otomatis |
tinggi | Atur tinggi gambar keluaran, defaultnya otomatis |
kualitas | Kualitas gambar default ke 80 |
aktifkanPickOriginal | Izinkan pemilihan gambar asli, defaultnya benar |
Melihat:
- Parameter bersifat opsional, jika tidak diteruskan, nilai default akan digunakan;
- Jika lebar > 0 dan tinggi > 0: gambar yang dikompresi mungkin lebih besar dari gambar asli atau kecepatan kompresinya tidak tinggi (misalnya, gambar asli berukuran 4 MB, dan gambar terkompresi berukuran 2 MB), kualitas dapat diatur lebih rendah , seperti 50;
- Jika lebar < 0 atau tinggi < 0: logika kompresi mendekati WeChat, dan resolusi serta kualitas kompresi yang sesuai dipilih secara otomatis. Pustaka kompresi menggunakan Luban dan Luban-iOS. Jika Anda mengalami masalah seperti kompresi yang tidak jelas, harap ajukan masalah pada proyek mereka;
- Saat dijalankan, terdapat tombol radio "Gambar Asli" pada antarmuka pemilihan gambar. Setelah dipilih, gambar yang dikembalikan adalah gambar asli yang tidak terkompresi.
tindakan pencegahan android
Pertama-tama hapus plug-in lama yang terpasang
Jika build melaporkan kesalahan berikut
error: resource android:attr/dialogCornerRadius not found
error: resource android:attr/fontVariationSettings not found
error: resource android:attr/ttcIndex not found
Silakan gunakan plug-in cordova-android-support-gradle-release untuk menyatukan versi perpustakaan Dukungan Android dalam proyek:
$ cordova plugin add cordova-android-support-gradle-release --variable ANDROID_SUPPORT_VERSION={required version}
Nilai {required version}
mirip dengan 26.+
, 27.+
, 28.+
.
Jika Anda menggunakan Cordova dan Gradle versi lebih rendah, kesalahan akan dilaporkan. implementation
Cordova 7.1.0 dan yang lebih lama tidak didukung cordova-plugin-ImagePickersrcandroidimagepicker.gradle
sesuai dengan [email protected] dan yang lebih lama). cordova-plugin-ImagePickersrcandroidimagepicker.gradle
diubah menjadi compile
karena versi Cordova-Android yang lebih rendah menggunakan versi Gradle yang lebih rendah dan tidak mendukung implementation
.
Jika build masih gagal
$ cordova platform rm android
atau
$ cordova platform rm ios
Hapus platform lama dan tambahkan lagi
Proyek referensi
Beberapa item gambar pilihan
- jeasonlzy/ImagePicker (Android)
- nanchen2251/ImagePicker
- CysionLiu/ImagePicker
- banchichen/TZImagePickerController (iOS)
Perpustakaan kompresi gambar
- nanchen2251/CompressHelper (Android)
- Curzibn/Luban (Android)
- GuoZhiQiang/Luban_iOS (iOS)
Perbarui instruksi
v1.2.2
- (ios) Peningkatan: iOS 13 mogok saat memilih banyak gambar dan masalah lainnya
v1.2.1
- (Android) Peningkatan: Glide Library 4.10.+ menyebabkan konflik antara perpustakaan Android.support dan Androidx
- (Android) Peningkatan: Atur pemilihan radio terlebih dahulu, lalu atur multi-pilihan, tetapi pemilih masih mengalami masalah pemilihan tunggal.
v1.1.9
- (iOS) Tambahkan metode
takePhoto
untuk langsung masuk ke pengambilan foto
v1.1.8
- (iOS) Perbaikan logika kompresi Luban
v1.1.7
- Diperbarui ke perpustakaan pemilihan gambar pihak ketiga terbaru
- Menambahkan item konfigurasi aktifkanPickOriginal (memungkinkan gambar asli dipilih, yaitu apakah akan menampilkan kotak centang gambar asli)
- (iOS) mendukung format gambar HEIC
v1.1.6
- (Android) Hapus referensi picasso dan kode logika implementasi terkait
v1.1.5
- (iOS) Batalkan pilihan fungsi panggilan balik dukungan gambar
v1.1.4
- Nilai yang dikembalikan meningkatkan lebar gambar, tinggi dan ukuran file.
- (iOS) Memperbaiki masalah mengaburkan beberapa gambar dalam kompresi ios
v1.1.3
- (Android) Memperbaiki masalah pengecualian operator berlian di build saat menggunakan Cordova-Android dan Gradle versi lebih rendah.
- (Android) Tambahkan metode
takePhoto
untuk langsung masuk ke pengambilan foto - (Android) Tambahkan panggilan balik yang gagal, yang akan dipicu ketika gambar dibatalkan.
v1.1.2
- (Android) Memperbaiki masalah ketika kembali ke halaman pratinjau gambar di beberapa ponsel, semua gambar kecil di dinding gambar hilang.
v1.1.1
- (Android) Diadaptasi ke Cordova@8, Cordova-Android@7
- (Android)provider_paths.xml diganti namanya, FileProvider diganti namanya, tidak akan bertentangan dengan plug-in lain, dan tidak perlu menyalinnya secara manual ke cordova/platform/android/res/xml/
- (Android) Hapus style.xml dan atur gaya dalam kode untuk menghindari konflik dengan plugin lain yang juga memiliki file dengan nama yang sama.
- (Android) Pustaka gambar Glide telah diperbarui ke yang terbaru, mendukung Gif, dan kinerjanya telah meningkat pesat. Seharusnya tidak ada masalah jika dinding gambar tidak dapat menampilkan gambar pratinjau.
- (Android) Tambahkan tombol radio "Gambar Asli" di bilah bawah dinding gambar
- (iOS) Memperbaiki masalah di iOS ketika gambar asli dicentang, gambar yang dikembalikan bukan gambar asli, dan gambar terkompresi lebih besar dari gambar asli.
- Parameter seperti maksimumImagesCount, lebar, dan tinggi diteruskan secara opsional
- Jika lebar < 0 dan tinggi < 0, resolusi dan rasio kompresi yang sesuai akan dipilih secara otomatis untuk kompresi, yang mendekati logika kompresi WeChat.
- Ubah parameter pengembalian callback sukses. Array jalur gambar asli
['xxx', 'yyy']
telah dikembalikan, dan sekarang menjadi { images: ['xxx', 'yyy'], isOrigin: true/false }
Lisensi
Lisensi MIT (MIT)