Estoy tratando de agregar un píxel a la imagen base64. Quiero que mi servidor Express reciba una cadena de imagen base64 (por ejemplo data:image/png;base64,iVBORw0KG... ) por ejemplo, digamos que la imagen es 100x100px y quiero agregar un píxel rojo en x=10 e y= 10, y luego enviarlo como respuesta. No tengo ningún código viable para mostrar porque no sé cómo hacerlo y no puedo encontrar nada en Internet. La parte exprés no es un problema. Sé cómo hacer eso. Buscando cualquier puntero en la dirección correcta, cualquier recomendación o partes del código. ¡Gracias!
Puede usar el paquete Jimp para hacer eso.
Aquí hay un ejemplo simple que configura un píxel rojo en una imagen png negra de 100x100:
const Jimp = require('jimp'); const { promisify } = require('util'); const MIME_TYPE = 'image/png'; const IMAGE_URL = `data:${MIME_TYPE};base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAA0SURBVHhe7cEBDQAAAMKg909tDjcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAbNXWUAAEE/b5iAAAAAElFTkSuQmCC`; const coords = { x: 10, y: 10 }; const color = { r: 255, g: 0, b: 0, a: 255 }; async function main(color, coords) { const imageData = IMAGE_URL.split(',').pop(); const image = await Jimp.read(Buffer.from(imageData, 'base64')); const hexColor = Jimp.rgbaToInt(color.r, color.g, color.b, color.a); image.setPixelColor(hexColor, coords.x, coords.y); const toBase64 = promisify(image.getBase64).bind(image); return await toBase64(MIME_TYPE); } main(color, coords) .then(console.log) .catch(console.error);