How to create an image on the fly with Node.js?

后端 未结 2 834
北海茫月
北海茫月 2020-12-14 02:27

I\'m using Node.js and Express web framework, I need to create an on-the-fly image .png or .jpg (like captcha), then I have to send that im

相关标签:
2条回答
  • 2020-12-14 03:08

    Here's some simple code using the canvas library:

    const
        fs = require("fs"),
        { createCanvas } = require("canvas");
    
    const WIDTH = 100;
    const HEIGHT = 50;
    
    const canvas = createCanvas(WIDTH, HEIGHT);
    const ctx = canvas.getContext("2d");
    
    ctx.fillStyle = "#222222";
    ctx.fillRect(0, 0, WIDTH, HEIGHT);
    ctx.fillStyle = "#f2f2f2";
    ctx.font = "32px Arial";
    ctx.fillText("Hello", 13, 35);
    
    const buffer = canvas.toBuffer("image/png");
    fs.writeFileSync("test.png", buffer);
    

    This is the resulting test.png file:

    Sample output image

    To run it, you must first install the library:

    npm i canvas
    

    Instead of saving it to a file, you could, of course, send it as the response of an API call.

    For more details on how to draw text using the canvas, see this MDN article.

    0 讨论(0)
  • 2020-12-14 03:13

    Maybe you could use canvas? There is also an implementation in node.js by Learnboost(TJ). I think this screencast is interesting to look at. As you see from presentation it even renders text in some examples. Also in the npm registry / node modules section I found a lot more interesting links

    0 讨论(0)
提交回复
热议问题