text2png: text-to-png generator for Node.js
text2png('Create png image\nfrom multi-line text!');
Quick start
text2png depends on @napi-rs/canvas.
$ npm install @thatiemsz/text2png
const { writeFile } = require('fs/promises');
const text2png = require('@thatiemsz/text2png');
await writeFile('out.png', text2png('Hello!', { color: 'blue' }));
Option
text2png(text, option)
param | default | |||
---|---|---|---|---|
text | (required) | |||
option.font | '30px sans-serif' | |||
option.textAlign | 'left' | |||
option.color (or option.textColor) | 'black' | |||
option.backgroundColor (or option.bgColor) | 'transparent' | |||
option.lineSpacing | 0 | |||
option.strokeWidth | 0 | |||
option.strokeColor | 'white' | |||
option.padding | 0 | |||
option.padding(Left\ | Top\ | Right\ | Bottom) | 0 |
option.borderWidth | 0 | |||
option.border(Left\ | Top\ | Right\ | Bottom)Width | 0 |
option.borderColor | 'black' | |||
option.localFontPath | ||||
option.localFontName | ||||
option.output | 'buffer' |
option.color = '#000' | 'rgb(0, 0, 0)' | 'black' | ...
option.output = 'buffer' | 'stream' | 'dataURL' | 'canvas'
option.strokeWidth = 1 | 2 | ...
A padding may have to be set to avoid cutoff of stroke
'canvas'
returns canvas object.
If you want to use any custom fonts without installing, use localFontPath
and localFontName
property.
text2png('with custom fonts', {
font: '50px Lobster',
localFontPath: 'fonts/Lobstar-Regular.ttf',
localFontName: 'Lobster'
});
Command line interface
$ npm install -g @thatiemsz/text2png
$ text2png --help
$ text2png -t "Hello!" -o "output.png"
Example
text2png('Example\nText', {
font: '80px Futura',
color: 'teal',
backgroundColor: 'linen',
lineSpacing: 10,
padding: 20
});
Enjoy!