Saya perlu mengkonversi gambar saya ke string Base64 sehingga saya dapat mengirim gambar saya ke server.
Apakah ada file JavaScript untuk ini? Lain, bagaimana saya bisa mengubahnya?
javascript
base64
Coder_sLaY
sumber
sumber
Jawaban:
Anda dapat menggunakan HTML5
<canvas>
untuk itu:Buat kanvas, muat gambar Anda ke dalamnya dan kemudian gunakan
toDataURL()
untuk mendapatkan representasi Base64 (sebenarnya, itu adalahdata:
URL, tetapi berisi gambar yang disandikan Base64).sumber
toDataURL
memberikan kontrol atas callback sepertidone/fail/always
halnya untuk xhr?Ada beberapa pendekatan yang dapat Anda pilih:
1. Pendekatan: FileReader
Muat gambar sebagai gumpalan melalui XMLHttpRequest dan gunakan FileReader API untuk mengubahnya menjadi dataURL :
Contoh kode ini juga dapat diimplementasikan menggunakan WHATWG fetch API :
Pendekatan-pendekatan ini:
Dukungan Browser:
2. Pendekatan: Kanvas
Masukkan gambar ke dalam Image-Object, cat ke kanvas yang tidak dicat dan ubah kembali kanvas menjadi dataURL.
Secara terperinci
Format input yang didukung:
image/png
,image/jpeg
,image/jpg
,image/gif
,image/bmp
,image/tiff
,image/x-icon
,image/svg+xml
,image/webp
,image/xxx
Format output yang didukung:
image/png
,image/jpeg
,image/webp
(Krom)Dukungan Browser:
3. Pendekatan: Gambar dari sistem file lokal
Jika Anda ingin mengonversi gambar dari sistem file pengguna, Anda perlu mengambil pendekatan yang berbeda. Gunakan API FileReader :
sumber
Image from origin **** has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://fiddle.jshell.net' is therefore not allowed access.
Cuplikan ini dapat mengonversi file string, gambar, dan bahkan video Anda menjadi data string Base64.
sumber
Pada dasarnya, jika gambar Anda
maka Anda dapat mengubahnya seperti
sumber
<img id='Img1' src='someurl' crossorigin='anonymous'>
Inilah yang saya lakukan:
Dan inilah cara Anda menggunakannya
sumber
Saya menemukan bahwa cara paling aman dan dapat diandalkan untuk melakukannya adalah menggunakan
FileReader()
.Demo: Gambar ke Base64
sumber
Jika Anda memiliki objek file, fungsi sederhana ini akan berfungsi:
Contoh penggunaan:
sumber
Anda bisa menggunakan FileAPI , tetapi itu tidak banyak didukung.
sumber
Sejauh yang saya tahu, gambar dapat dikonversi menjadi string Base64 baik oleh FileReader () atau menyimpannya di elemen kanvas dan kemudian menggunakan toDataURL () untuk mendapatkan gambar. Saya punya masalah serupa yang bisa Anda rujuk.
Konversi gambar ke kanvas yang sudah dimuat
sumber
Coba kode ini:
Untuk acara perubahan unggahan file, panggil fungsi ini:
Menyimpan data Base64 dalam arsip tersembunyi untuk digunakan.
sumber
sumber
Nah, jika Anda menggunakan Dojo Toolkit , itu memberi kami cara langsung untuk menyandikan atau mendekode ke Base64.
Coba ini:
Untuk menyandikan larik byte menggunakan dojox.encoding.base64:
Untuk memecahkan kode string yang disandikan Base64:
sumber