Tengo datos sin procesar de 16 bits como cadena base64. Quiere convertir eso en una imagen png, según la profundidad 8,16,24.
// code to process 16bit buffer array function process16bitBitmap(buffer, options = {}) { const view = new Uint8ClampedArray(buffer); const out = new Uint8ClampedArray(buffer.byteLength); // set alpha channel view.forEach((a, i) => out[(i * 4) + 3] = a); const canvas = document.createElement('canvas'); canvas.width = options.width; canvas.height = options.height; const imgData = new ImageData(out, options.width, options.height); canvas.getContext('2d').putImageData(imgData, 0, 0); // if you want to save a png version document.body.appendChild(canvas);}violín para reproducir el problema jsfiddle
Enfrentando dificultades para crear correctamente un archivo png a partir de datos sin procesar de 16 bits. La imagen de 16 bits debería verse así.
Encontré esto pero no encontré una manera de reproducirlo.
Encontré esto y funciona bien. También encontréesto pero no funcionó para mí.
const fs = require('fs'); const path = require('path'); const base64ToPNG = (data) => { data = data.replace(/^data:image\/png;base64,/, ''); fs.writeFile(path.resolve(__dirname, 'image.png'), data, 'base64', function (err) { if (err) throw err; }); } var img = "YourImageHere...iVBORw0KGgoAAAANSUhEUgAAANwAAADcCAYAAAAbWs+..."; base64ToPNG(img)Si su objetivo es hacerlo con vainilla, no sé si podría ayudarlo, con el nodo funciona de esa manera, por lo que probablemente solo necesite descubrir cómo ajustar la profundidad.