gpt4 book ai didi

node.js - NodeJS 编写 base64 图像文件

转载 作者:IT老高 更新时间:2023-10-28 21:53:27 26 4
gpt4 key购买 nike

我的 NodeJS-Server 收到一张 base64 编码的图片。

data:image/jpeg;base64,/9j/4QCcRXhpZgAASUkqAAgAAAA ... CiiigD//Z

接收到的数据应该保存为jpg。因此我使用了 Buffer 和 FileSystemWriter:

var imageBuffer = new Buffer(data, 'base64'); //console = <Buffer 75 ab 5a 8a ...
fs.writeFile("test.jpg", imageBuffer, function(err) { //... });

fs.writeFile 不会引发错误。保存了一个 jpeg 文件,但我无法打开它。Image-Viewer 说:

File is damaged or too big.

原始文件为 6kb,新文件为 7kb。

最佳答案

您必须从中剥离 url 元信息,即 data:image/jpeg 部分。 (重申@CBroe 所说的)这是一个从输入字符串返回正确信息的小函数。

var data = 'data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAA..kJggg==';

function decodeBase64Image(dataString) {
var matches = dataString.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/),
response = {};

if (matches.length !== 3) {
return new Error('Invalid input string');
}

response.type = matches[1];
response.data = new Buffer(matches[2], 'base64');

return response;
}

var imageBuffer = decodeBase64Image(data);
console.log(imageBuffer);
// { type: 'image/jpeg',
// data: <Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 b4 00 00 00 2b 08 06 00 00 00 d1 fd a2 a4 00 00 00 04 67 41 4d 41 00 00 af c8 37 05 8a e9 00 00 ...> }

然后您可以使用上述方法保存缓冲区。

fs.writeFile('test.jpg', imageBuffer.data, function(err) { ... });

关于node.js - NodeJS 编写 base64 图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20267939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com