TypeError: Image or Canvas expected
TypeError: Image or Canvas expected
这是我在获取图像但不工作的路由中使用带有请求参数 text
的 express 的函数
const { Canvas } = require('canvas-constructor')
const canvas = require('canvas')
function getStatusBanner(req, res) {
const img = canvas.loadImage('./images/banner.jpg')
let image = new Canvas(339, 94)
.printImage(img, 0, 0, 339, 94)
.setTextFont('12px Impact')
.printText(req.params.text, 130, 150)
.toBuffer();
res.set({'Content-Type': 'image/jpg'})
res.send(image)
}
module.exports = { getStatusBanner }
似乎根本不起作用
TypeError: Image or Canvas expected
at s.printImage (E:\Coding\OTHER\megumin\node_modules\canvas-constructor\dist\index.js:1:3866)
at getStatusBanner (E:\Coding\OTHER\megumin\functions\getBanner.js:8:6)
at Layer.handle [as handle_request] (E:\Coding\OTHER\megumin\node_modules\express\lib\router\layer.js:95:5)
at next (E:\Coding\OTHER\megumin\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (E:\Coding\OTHER\megumin\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (E:\Coding\OTHER\megumin\node_modules\express\lib\router\layer.js:95:5)
at E:\Coding\OTHER\megumin\node_modules\express\lib\router\index.js:281:22
at Function.process_params (E:\Coding\OTHER\megumin\node_modules\express\lib\router\index.js:335:12)
at next (E:\Coding\OTHER\megumin\node_modules\express\lib\router\index.js:275:10)
at E:\Coding\OTHER\megumin\index.js:29:5
我已经测试了您的代码并进行了一些更改以使其正常工作。
loadImage 方法异步工作。您需要更改代码才能以这种方式工作。
遵循代码。剩下的就是把文本参数,但我认为你可以适应你的代码。
const { Canvas,resolveImage } = require('canvas-constructor')
const canvas = require('canvas')
const express = require('express')
const app = express()
const port = 3000
app.get('/', async (req, res) => {
const img = await createCanvas();
res.set({'Content-Type': 'image/jpg'})
res.send(img)
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
async function createCanvas() {
const img = await canvas.loadImage('./images/banner.jpg');
return new Canvas(339, 94)
.printImage(img, 0, 0, 339, 94)
.toBufferAsync();
}
这是我在获取图像但不工作的路由中使用带有请求参数 text
的 express 的函数
const { Canvas } = require('canvas-constructor')
const canvas = require('canvas')
function getStatusBanner(req, res) {
const img = canvas.loadImage('./images/banner.jpg')
let image = new Canvas(339, 94)
.printImage(img, 0, 0, 339, 94)
.setTextFont('12px Impact')
.printText(req.params.text, 130, 150)
.toBuffer();
res.set({'Content-Type': 'image/jpg'})
res.send(image)
}
module.exports = { getStatusBanner }
似乎根本不起作用
TypeError: Image or Canvas expected
at s.printImage (E:\Coding\OTHER\megumin\node_modules\canvas-constructor\dist\index.js:1:3866)
at getStatusBanner (E:\Coding\OTHER\megumin\functions\getBanner.js:8:6)
at Layer.handle [as handle_request] (E:\Coding\OTHER\megumin\node_modules\express\lib\router\layer.js:95:5)
at next (E:\Coding\OTHER\megumin\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (E:\Coding\OTHER\megumin\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (E:\Coding\OTHER\megumin\node_modules\express\lib\router\layer.js:95:5)
at E:\Coding\OTHER\megumin\node_modules\express\lib\router\index.js:281:22
at Function.process_params (E:\Coding\OTHER\megumin\node_modules\express\lib\router\index.js:335:12)
at next (E:\Coding\OTHER\megumin\node_modules\express\lib\router\index.js:275:10)
at E:\Coding\OTHER\megumin\index.js:29:5
我已经测试了您的代码并进行了一些更改以使其正常工作。
loadImage 方法异步工作。您需要更改代码才能以这种方式工作。
遵循代码。剩下的就是把文本参数,但我认为你可以适应你的代码。
const { Canvas,resolveImage } = require('canvas-constructor')
const canvas = require('canvas')
const express = require('express')
const app = express()
const port = 3000
app.get('/', async (req, res) => {
const img = await createCanvas();
res.set({'Content-Type': 'image/jpg'})
res.send(img)
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
async function createCanvas() {
const img = await canvas.loadImage('./images/banner.jpg');
return new Canvas(339, 94)
.printImage(img, 0, 0, 339, 94)
.toBufferAsync();
}