首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jimp处理图像后下载图像文件

Jimp处理图像后下载图像文件
EN

Stack Overflow用户
提问于 2019-09-15 04:28:02
回答 1查看 3.4K关注 0票数 1

我有一条回家的路。在这个主路由中,我使用Jimp库来处理图像,调整它的大小,然后更改质量,最后将图像保存在目录中,但是我想下载映像,以便用户可以在他的机器上下载它。但它没有下载。我正确地保存在名为output.jpg的目录中。这是代码

app.get("/",(req,res) => {

res.type('jpg');res.attachment('output.jpg')

jimp.read('lenna.png',(err,lenna) => { if (err)抛出错误;lenna .resize(256,256) // resize .quality(60) / set JPEG quality .greyscale() // set greyscale .write('output.jpg');//保存

res.download('output.jpg');};

EN

回答 1

Stack Overflow用户

发布于 2019-09-15 07:18:07

当试图复制错误时,当向节点服务器发送请求时,我会在浏览器中下载一个jpg文件,但是这个文件似乎是错误的。原因是jimp.write()是一个异步函数,因此

代码语言:javascript
运行
复制
res.download('output.jpg')

在完成jimp.write()将文件写入磁盘之前执行。要在文件完全写入磁盘后发送文件,您有两个选项可以使用jimp.write,这是文档化的这里

下面是我的快速代码来重现和修复这个问题

使用带有回调的jimp.write的

代码语言:javascript
运行
复制
const express = require('express')
const app = express()
var jimp = require('jimp');

app.get("/", (req, res) => {
    res.type('jpg');
    res.attachment('output.jpg');
    jimp.read('lenna.png', (err, lenna) => {
        if (err) throw err; 
        lenna.resize(256, 256) // resize
        .quality(60) // set JPEG quality
        .greyscale() // set greyscale
        .write('output.jpg', res.download('output.jpg')); // save
    });
});

app.listen(3000);

重要的一行是将res.download()放在jimp.write()的回调中,当jimp将文件写入磁盘时执行回调。

代码语言:javascript
运行
复制
.write('output.jpg', res.download('output.jpg')); // save

使用返回承诺的jimp.writeAsync

代码语言:javascript
运行
复制
const express = require('express')
const app = express()
var jimp = require('jimp');

app.get("/", (req, res) => {
    res.type('jpg');
    res.attachment('output.jpg');
    jimp.read('lenna.png', async (err, lenna) => {
        if (err) throw err; 
        await lenna.resize(256, 256) // resize
        .quality(60) // set JPEG quality
        .greyscale() // set greyscale
        .writeAsync('output.jpg'); // save
        res.download('output.jpg');
    });
});

app.listen(3000);

使用异步并等待直到lenna.(.).writeAsync(‘output.jpg’)完成并解析返回的承诺

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57941151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档