如何在节点js中编辑base64图像
How to edit base64 image in node js
我正在尝试向 base64 图片添加一个像素。我希望我的快递服务器接收 base64 图像字符串(例如 data:image/png;base64,iVBORw0KG...
),例如,假设图像是 100x100px,我想在 x=10 和 y=10 上添加红色像素,然后发送它作为回应。我没有任何可行的代码可以显示,因为我不知道该怎么做,也无法在互联网上找到任何东西。表达部分不是我知道如何做到的问题。寻找正确方向的任何指针、任何建议或部分代码。谢谢!
您可以使用 Jimp 包来做到这一点。
这是一个在 100x100 黑色 png 图像上设置红色像素的简单示例:
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);
尝试使用sharp处理图像。您可以将 base64 图像转换为缓冲区并使用此库
var imgUri = base64Str.split(';base64,').pop()
var buffer = Buffer.from(uri, 'base64');
sharp(buffer)
. // Do your thing here with sharp
我正在尝试向 base64 图片添加一个像素。我希望我的快递服务器接收 base64 图像字符串(例如 data:image/png;base64,iVBORw0KG...
),例如,假设图像是 100x100px,我想在 x=10 和 y=10 上添加红色像素,然后发送它作为回应。我没有任何可行的代码可以显示,因为我不知道该怎么做,也无法在互联网上找到任何东西。表达部分不是我知道如何做到的问题。寻找正确方向的任何指针、任何建议或部分代码。谢谢!
您可以使用 Jimp 包来做到这一点。
这是一个在 100x100 黑色 png 图像上设置红色像素的简单示例:
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);
尝试使用sharp处理图像。您可以将 base64 图像转换为缓冲区并使用此库
var imgUri = base64Str.split(';base64,').pop()
var buffer = Buffer.from(uri, 'base64');
sharp(buffer)
. // Do your thing here with sharp