J'ai besoin de convertir mon image en une chaîne Base64 afin de pouvoir envoyer mon image à un serveur.
Existe-t-il un fichier JavaScript pour cela? Sinon, comment puis-je le convertir?
javascript
base64
Coder_sLaY
la source
la source
Réponses:
Vous pouvez utiliser le HTML5
<canvas>
pour cela:Créez un canevas, chargez-y votre image puis utilisez-la
toDataURL()
pour obtenir la représentation Base64 (en fait, c'est unedata:
URL, mais elle contient l'image encodée Base64).la source
toDataURL
contrôle des rappelsdone/fail/always
comme c'est le cas pour xhr?Il existe plusieurs approches parmi lesquelles vous pouvez choisir:
1. Approche: FileReader
Chargez l'image en tant qu'objet blob via XMLHttpRequest et utilisez l' API FileReader pour la convertir en dataURL :
Cet exemple de code peut également être implémenté à l'aide de l' API de récupération WHATWG :
Ces approches:
Prise en charge du navigateur:
2. Approche: toile
Chargez l'image dans un objet image, peignez-la sur un canevas non contaminé et reconvertissez le canevas en dataURL.
En détail
Formats d'entrée pris en charge:
image/png
,image/jpeg
,image/jpg
,image/gif
,image/bmp
,image/tiff
,image/x-icon
,image/svg+xml
,image/webp
,image/xxx
Formats de sortie pris en charge:
image/png
,image/jpeg
,image/webp
(Chrome)Prise en charge du navigateur:
3. Approche: images du système de fichiers local
Si vous souhaitez convertir des images à partir du système de fichiers des utilisateurs, vous devez adopter une approche différente. Utilisez l' API FileReader :
la source
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.
Cet extrait peut convertir votre chaîne, image et même fichier vidéo en données de chaîne Base64.
la source
Fondamentalement, si votre image est
alors vous pouvez le convertir comme
la source
<img id='Img1' src='someurl' crossorigin='anonymous'>
Voici ce que j'ai fait:
Et voici comment vous l'utilisez
la source
J'ai trouvé que la façon la plus sûre et la plus fiable de le faire est de l'utiliser
FileReader()
.Démo: Image vers Base64
la source
Si vous avez un objet fichier, cette fonction simple fonctionnera:
Exemple d'utilisation:
la source
Vous pouvez utiliser FileAPI , mais il n'est pratiquement pas pris en charge.
la source
Pour autant que je sache, une image peut être convertie en une chaîne Base64 soit par FileReader () soit en la stockant dans l'élément canvas, puis en utilisant toDataURL () pour obtenir l'image. J'ai eu le même genre de problème que vous pouvez vous référer.
Convertir une image en toile déjà chargée
la source
Essayez ce code:
Pour un événement de modification de téléchargement de fichier, appelez cette fonction:
Stockez les données Base64 dans des fichiers cachés à utiliser.
la source
la source
Eh bien, si vous utilisez Dojo Toolkit , cela nous donne un moyen direct d'encoder ou de décoder en Base64.
Essaye ça:
Pour coder un tableau d'octets à l'aide de dojox.encoding.base64:
Pour décoder une chaîne codée en Base64:
la source