在 Express 中使用节点 Canvas API 从输入流读取时出错
Error while reading from input stream using Node Canvas API in Express
我目前正在制作一个程序,在 javascript 中将 2 张图像组合在一起,我通过使用 Node Canvas API 中的 loadImage()
函数加载图像并绘图来实现这一点图像到 canvas
.
的 context
这里是文件canvas.js
的javascript代码供参考。
const { createCanvas, loadImage } = require("canvas");
const fs = require("fs");
const canvas = createCanvas(0, 0, "png");
const context = canvas.getContext("2d");
try {
const picture = loadImage(`../image.png`);
const frame = loadImage(`../frame.png`);
Promise.all([picture, frame]).then((response) => {
response.map((image, index) => {
if (index === 0) {
canvas.width = image.width;
canvas.height = image.height;
context.drawImage(image, 0, 0);
} else {
context.drawImage(image, 0, 0, canvas.width, canvas.height);
// Outputs the canvas object
fs.writeFileSync("../framed/out.png", canvas.toBuffer());
}
});
});
} catch (err) {
console.log(err);
}
前几天我能够成功输出一个文件,但是现在当我运行代码时,我在控制台中收到以下错误:
Error: error while reading from input stream
at setSource (/api/node_modules/canvas/lib/image.js:91:13)
at Image.set (/api/node_modules/canvas/lib/image.js:62:9)
at /api/node_modules/canvas/index.js:34:15
at new Promise (<anonymous>)
at loadImage (/api/node_modules/canvas/index.js:23:10)
at frameImage (/api/src/canvas.js:9:21)
at Object.<anonymous> (/api/src/canvas.js:30:1)
at Module._compile (node:internal/modules/cjs/loader:1083:30)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1112:10)
at Module.load (node:internal/modules/cjs/loader:948:32)
除了怀疑我传递给 loadImage()
的论点不正确之外,我不知道该怎么做,但事实可能并非如此。
我明白了,问题是我如何处理我的 post 请求上传图片,然后合并图片的顺序。因为我没有考虑到这一点,writefile()
功能被中断,将损坏的图像文件保存到我的本地存储。
我目前正在制作一个程序,在 javascript 中将 2 张图像组合在一起,我通过使用 Node Canvas API 中的 loadImage()
函数加载图像并绘图来实现这一点图像到 canvas
.
context
这里是文件canvas.js
的javascript代码供参考。
const { createCanvas, loadImage } = require("canvas");
const fs = require("fs");
const canvas = createCanvas(0, 0, "png");
const context = canvas.getContext("2d");
try {
const picture = loadImage(`../image.png`);
const frame = loadImage(`../frame.png`);
Promise.all([picture, frame]).then((response) => {
response.map((image, index) => {
if (index === 0) {
canvas.width = image.width;
canvas.height = image.height;
context.drawImage(image, 0, 0);
} else {
context.drawImage(image, 0, 0, canvas.width, canvas.height);
// Outputs the canvas object
fs.writeFileSync("../framed/out.png", canvas.toBuffer());
}
});
});
} catch (err) {
console.log(err);
}
前几天我能够成功输出一个文件,但是现在当我运行代码时,我在控制台中收到以下错误:
Error: error while reading from input stream
at setSource (/api/node_modules/canvas/lib/image.js:91:13)
at Image.set (/api/node_modules/canvas/lib/image.js:62:9)
at /api/node_modules/canvas/index.js:34:15
at new Promise (<anonymous>)
at loadImage (/api/node_modules/canvas/index.js:23:10)
at frameImage (/api/src/canvas.js:9:21)
at Object.<anonymous> (/api/src/canvas.js:30:1)
at Module._compile (node:internal/modules/cjs/loader:1083:30)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1112:10)
at Module.load (node:internal/modules/cjs/loader:948:32)
除了怀疑我传递给 loadImage()
的论点不正确之外,我不知道该怎么做,但事实可能并非如此。
我明白了,问题是我如何处理我的 post 请求上传图片,然后合并图片的顺序。因为我没有考虑到这一点,writefile()
功能被中断,将损坏的图像文件保存到我的本地存储。