【问题标题】:Convert raw buffer data to a JPEG image将原始缓冲区数据转换为 JPEG 图像
【发布时间】:2019-08-05 16:46:05
【问题描述】:

这个问题是this answer 的后续问题。我问这个问题是因为我没有足够的声誉来制作 cmets。

我正在尝试编写一个获取图像并将其发送到 Node.js 服务器的 Android 应用程序。

我在上面链接的帖子中找到了这段代码,但它给我留下了一个原始数据缓冲区。如何将此缓冲区的内容保存为 JPEG 图像?

app.post('/upload-image', rawBody, function(req, res) {
    if (req.rawBody && req.bodyLength > 0) {

        // TODO save image (req.rawBody) somewhere

        // send some content as JSON
        res.send(200, {
            status: 'OK'
        });
    } else {
        res.send(500);
    }
});

function rawBody(req, res, next) {
    var chunks = [];

    req.on('data', function(chunk) {
        chunks.push(chunk);
    });

    req.on('end', function() {
        var buffer = Buffer.concat(chunks);

        req.bodyLength = buffer.length;
        req.rawBody = buffer;
        next();
    });

    req.on('error', function(err) {
        console.log(err);
        res.status(500);
    });
}

【问题讨论】:

  • 您是否以某种方式验证或筛选客户端设备或服务器上的文件类型?如果有人上传 PNG,如果不先转换,就无法将其保存为 JPEG。
  • 您好,感谢您的回复。没有筛选或验证。我只需要将用户手机应用中的图片上传到服务器,用matlab处理即可。

标签: javascript android node.js


【解决方案1】:

您可以简单地使用writeFile

将文件路径作为第一个参数传递,buffer 作为第二个参数传递,并在文件写入后执行代码的回调。

或者,使用 writeFileSync,这是 writeFile 的同步版本,不需要回调

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    相关资源
    最近更新 更多