javascript - Node JS : Preview downloading images*

标签 javascript node.js html5-canvas

我正在制作一个主要用于从网络下载图像的 node.js 应用程序。我已经创建了这个成功下载图像的功能。我想让该功能在不影响下载速度的情况下在下载图像时也显示图像的实时预览。是否可以“点击管道”并在下载到 html Canvas 或 img 时绘制图像?我正在使用 electron,所以我正在寻找基于 chromium/node.js 的解决方案。

编辑: 我还发现你可以 chain pipes (r.pipe(file).pipe(canvas);) 但我不确定这是否会先下载文件然后显示在 Canvas 上,或者是否会将它们更新为文件下载。

我还考虑过根据请求创建两个单独的管道 (var r = request(url); r.pipe(file); r.pipe(canvas);),但我我不确定这是否会尝试下载图像两次。

我也不是特别熟悉 html Canvas ,也无法测试这些想法,因为我不知道如何将图像传输到 Canvas 或 img 元素以在应用程序中显示。

const fs = require('fs-extra');
downloadFile(url, filename) {
    return new Promise(resolve => {
        var path = filename.substring(0, filename.lastIndexOf('\\'));
        if (!fs.existsSync(path)) fs.ensureDirSync(path);
            var file = fs.createWriteStream(filename);
            var r = request(url).pipe(file);
            // How would also pipe this to a canvas or img element?
            r.on('error', function(err) { console.log(err); throw new Error('Error downloading file') });
            r.on('finish', function() { file.close(); resolve('done'); });         
    });
}

最佳答案

我最后问了另一个类似的问题,为这个问题提供了答案。结果是 solution是将图像通过管道传输到内存中,使用 base64 对其进行编码并使用 data:image url 显示它。

关于javascript - Node JS : Preview downloading images*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52288019/

相关文章:

javascript - Canvas 尺寸已关闭

javascript - 如何在 Jquery/Javascript 中选择预定义选择的第一个和最后一个元素而不循环?

javascript - 随机选择所有表单字段值并填写表单 - JS 或 jQuery - 不确定是哪个

node.js - Webpack 没有创建它用来创建的 HTML 文件

node.js - 创建一个无需用户许可即可运行的 WebRTC 应用程序

c++ - node.js 附加组件中未捕获异常

javascript - 在多边形中心绘制文本

javascript - 如何使 ExtJS 表格布局具有百分比而不是高度和宽度的绝对值?

javascript - JS中的碰撞检测

javascript - 如何在fabric js中使用image.centerObject()将对象居中后获取图像坐标