Necesito convertir mi imagen en una cadena Base64 para poder enviar mi imagen a un servidor.
¿Hay algún archivo JavaScript para esto? De lo contrario, ¿cómo puedo convertirlo?
javascript
base64
Coder_sLaY
fuente
fuente
Respuestas:
Puedes usar el HTML5
<canvas>
para ello:Cree un lienzo, cargue su imagen en él y luego úselo
toDataURL()
para obtener la representación de Base64 (en realidad, es unadata:
URL, pero contiene la imagen codificada en Base64).fuente
toDataURL
control sobre las devoluciones de llamada,done/fail/always
como es el caso de xhr?Hay varios enfoques entre los que puede elegir:
1. Enfoque: FileReader
Cargue la imagen como blob a través de XMLHttpRequest y use la API FileReader para convertirla en dataURL :
Este ejemplo de código también podría implementarse utilizando la API de recuperación WHATWG :
Estos enfoques:
Soporte de navegador:
2. Enfoque: lienzo
Cargue la imagen en un Objeto de imagen, pinte en un lienzo no contaminado y vuelva a convertir el lienzo en un dataURL.
En detalle
Formatos de entrada admitidos:
image/png
,image/jpeg
,image/jpg
,image/gif
,image/bmp
,image/tiff
,image/x-icon
,image/svg+xml
,image/webp
,image/xxx
Formatos de salida admitidos:
image/png
,image/jpeg
,image/webp
(Cromo)Soporte de navegador:
3. Enfoque: imágenes del sistema de archivos local
Si desea convertir imágenes del sistema de archivos de los usuarios, debe adoptar un enfoque diferente. Use la API FileReader :
fuente
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.
Este fragmento puede convertir su cadena, imagen e incluso archivo de video a datos de cadena Base64.
fuente
Básicamente, si tu imagen es
entonces puedes convertirlo como
fuente
<img id='Img1' src='someurl' crossorigin='anonymous'>
Aquí esta lo que hice:
Y así es como lo usas
fuente
Descubrí que la forma más segura y confiable de hacerlo es usarlo
FileReader()
.Demostración: imagen a Base64
fuente
Si tiene un objeto de archivo, esta simple función funcionará:
Ejemplo de uso:
fuente
Podrías usar FileAPI , pero no es compatible.
fuente
Hasta donde sé, una imagen se puede convertir en una cadena Base64, ya sea por FileReader () o almacenarla en el elemento de lienzo y luego usar toDataURL () para obtener la imagen. Tuve el mismo tipo de problema, puedes referir esto.
Convierta una imagen a lienzo que ya está cargada
fuente
Prueba este código:
Para un evento de cambio de carga de archivo, llame a esta función:
Almacene datos Base64 en archivos ocultos para su uso.
fuente
fuente
Bueno, si está utilizando Dojo Toolkit , nos brinda una forma directa de codificar o decodificar en Base64.
Prueba esto:
Para codificar una matriz de bytes usando dojox.encoding.base64:
Para decodificar una cadena codificada en Base64:
fuente