traductor online imagen decodificar javascript base64 arraybuffer

javascript - online - Convierte cadena de base64 a ArrayBuffer



decodificar imagen base64 javascript (6)

Acaba de encontrar base64-arraybuffer, un pequeño paquete npm con un uso increíblemente alto, 5 millones de descargas el mes pasado (2017-08).

https://www.npmjs.com/package/base64-arraybuffer

Para cualquiera que busque algo de la mejor solución estándar, puede ser.

Necesito convertir una cadena de codificación base64 en un ArrayBuffer. Las cadenas base64 son entradas del usuario, se copiarán y pegarán desde un correo electrónico, por lo que no estarán allí cuando se cargue la página. Me gustaría hacer esto en javascript sin hacer una llamada ajax al servidor si es posible.

Encontré esos enlaces interesantes, pero no me ayudaron:

ArrayBuffer a la cadena codificada en base64

se trata de la conversión opuesta, de ArrayBuffer a base64, no al revés

http://jsperf.com/json-vs-base64/2

esto se ve bien, pero no puedo entender cómo usar el código.

¿Hay alguna manera fácil (quizás nativa) de hacer la conversión? Gracias


Javascript es un entorno de desarrollo fino, por lo que parece extraño que no brinde una solución a este pequeño problema. Las soluciones ofrecidas en otra parte de esta página son potencialmente lentas. Aquí está mi solución. Emplea la funcionalidad incorporada que decodifica las URL de datos de sonido e imágenes base64.

var req = new XMLHttpRequest; req.open(''GET'', "data:application/octet;base64," + base64Data); req.responseType = ''arraybuffer''; req.onload = function fileLoaded(e) { var byteArray = new Int8Array(e.target.response); // var shortArray = new Int16Array(e.target.response); // var unsignedShortArray = new Int16Array(e.target.response); // etc. } req.send();

La solicitud de envío falla si la cadena de la base 65 está mal formada.

El tipo de mime (aplicación / octeto) probablemente sea innecesario.

Probado en cromo. Debería funcionar en otros navegadores.


La respuesta de Goran.it no funciona debido a un problema unicode en javascript - https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding .

Terminé usando la función que figura en el blog de Daniel Guerrero: http://blog.danguer.com/2011/10/24/base64-binary-decoding-in-javascript/

La función aparece en el enlace de github: https://github.com/danguer/blog-examples/blob/master/js/base64-binary.js

Usa estas líneas

var uintArray = Base64Binary.decode(base64_string); var byteArray = Base64Binary.decodeArrayBuffer(base64_string);


Prueba esto:

function _base64ToArrayBuffer(base64) { var binary_string = window.atob(base64); var len = binary_string.length; var bytes = new Uint8Array( len ); for (var i = 0; i < len; i++) { bytes[i] = binary_string.charCodeAt(i); } return bytes.buffer; }


Usando TypedArray.from :

Uint8Array.from(atob(base64_string), c => c.charCodeAt(0))

Rendimiento que se comparará con la versión for loop de la respuesta Goran.it.