img imagen decodificar data convertir convert javascript jquery base64

javascript - decodificar - imagen en base64



convertir base64 en imagen en javascript/jquery (5)

Este no es exactamente el escenario del OP, sino una respuesta a las de algunos de los comentaristas. Es una solución basada en Cordova y Angular 1, que debería ser adaptable a otros frameworks como jQuery. Le da una gota de datos de Base64 que puede almacenar en algún lugar y hacer referencia a ella desde el lado del cliente javascript / html.

También responde la pregunta original sobre cómo obtener una imagen (archivo) a partir de los datos de Base 64:

La parte importante es la Base 64 - Conversión binaria:

function base64toBlob(base64Data, contentType) { contentType = contentType || ''''; var sliceSize = 1024; var byteCharacters = atob(base64Data); var bytesLength = byteCharacters.length; var slicesCount = Math.ceil(bytesLength / sliceSize); var byteArrays = new Array(slicesCount); for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) { var begin = sliceIndex * sliceSize; var end = Math.min(begin + sliceSize, bytesLength); var bytes = new Array(end - begin); for (var offset = begin, i = 0; offset < end; ++i, ++offset) { bytes[i] = byteCharacters[offset].charCodeAt(0); } byteArrays[sliceIndex] = new Uint8Array(bytes); } return new Blob(byteArrays, { type: contentType }); }

Se requiere cortar para evitar errores de falta de memoria.

Funciona con archivos jpg y pdf (al menos eso es lo que probé). Debería funcionar también con otros tipos de miméticos / tipos de contenido. Comprueba los navegadores y sus versiones para las que apuntas, deben ser compatibles con Uint8Array, Blob y atob.

Aquí está el código para escribir el archivo en el almacenamiento local del dispositivo con Cordova / Android:

... window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, function(dirEntry) { // Setup filename and assume a jpg file var filename = attachment.id + "-" + (attachment.fileName ? attachment.fileName : ''image'') + "." + (attachment.fileType ? attachment.fileType : "jpg"); dirEntry.getFile(filename, { create: true, exclusive: false }, function(fileEntry) { // attachment.document holds the base 64 data at this moment var binary = base64toBlob(attachment.document, attachment.mimetype); writeFile(fileEntry, binary).then(function() { // Store file url for later reference, base 64 data is no longer required attachment.document = fileEntry.nativeURL; }, function(error) { WL.Logger.error("Error writing local file: " + error); reject(error.code); }); }, function(errorCreateFile) { WL.Logger.error("Error creating local file: " + JSON.stringify(errorCreateFile)); reject(errorCreateFile.code); }); }, function(errorCreateFS) { WL.Logger.error("Error getting filesystem: " + errorCreateFS); reject(errorCreateFS.code); }); ...

Escribir el archivo en sí:

function writeFile(fileEntry, dataObj) { return $q(function(resolve, reject) { // Create a FileWriter object for our FileEntry (log.txt). fileEntry.createWriter(function(fileWriter) { fileWriter.onwriteend = function() { WL.Logger.debug(LOG_PREFIX + "Successful file write..."); resolve(); }; fileWriter.onerror = function(e) { WL.Logger.error(LOG_PREFIX + "Failed file write: " + e.toString()); reject(e); }; // If data object is not passed in, // create a new Blob instead. if (!dataObj) { dataObj = new Blob([''missing data''], { type: ''text/plain'' }); } fileWriter.write(dataObj); }); }) }

Estoy usando las últimas versiones de Cordova (6.5.0) y complementos:

Espero que esto ponga a todos aquí en la dirección correcta.

He escrito un código para capturar imágenes usando javascript / jquery A continuación se muestra el código:

function capture_image(){ alert("capture_image"); var p = webcam.capture(); webcam.save(); alert("capture complete "+p); //getting true here var img = canvas.toDataURL("image"); var item_image = img.replace(/^data:image//(png|jpg);base64,/, "") ; alert("item_image"+item_image); }

El item_image imprime el formato base64, cómo convertir ese base64 a la imagen y cómo usar esa ruta en el lado del cliente de javascript.

Estoy buscando en Google tantos sitios web pero no funciona y ese código no es adecuado para mis requerimientos.


Html

<img id="imgElem"></img>

Js

string baseStr64="/9j/4AAQSkZJRgABAQE..."; imgElem.setAttribute(''src'', "data:image/jpg;base64," + baseStr64);


Simplemente puede crear un objeto Image y poner el base64 como su src , incluyendo los data:image... parte como esta :

var image = new Image(); image.src = ''data:image/png;base64,iVBORw0K...''; document.body.appendChild(image);

Es lo que ellos llaman "URI de datos" y aquí está la tabla de compatibilidad para la paz interior.


Una manera rápida y fácil:

function paintSvgToCanvas(uSvg, uCanvas) { var pbx = document.createElement(''img''); pbx.style.width = uSvg.style.width; pbx.style.height = uSvg.style.height; pbx.src = ''data:image/svg+xml;base64,'' + window.btoa(uSvg.outerHTML); uCanvas.getContext(''2d'').drawImage(pbx, 0, 0); }


var src = "data:image/jpeg;base64,"; src += item_image; var newImage = document.createElement(''img''); newImage.src = src; newImage.width = newImage.height = "80"; document.querySelector(''#imageContainer'').innerHTML = newImage.outerHTML;//where to insert your image