HTML5 inspired canvas implemented in Node.js for rendering PNG images.
- Render simple polygons as PNG with no native dependencies like PhantomJS.
- The library does not run in the browser.
- This is not an attempt to implement the complete HTML5 CanvasRenderingContext2D interface. See the supported methods below.
- The performance has not been in focus. If performance is important in your project, consider using a native backed canvas implementation.
Install the canvas-renderer NPM package.
npm install canvas-renderer
The following example renders two triangles to test.png.
const fs = require("fs");
const canvasRenderer = require("canvas-renderer");
var canvas = canvasRenderer.createCanvas(100, 100);
var ctx = canvas.getContext("2d");
ctx.fillStyle = "#ff0000";
ctx.beginPath();
ctx.moveTo(10, 10);
ctx.lineTo(90, 10);
ctx.lineTo(10, 90);
ctx.fill();
ctx.fillStyle = "#0000ff";
ctx.beginPath();
ctx.moveTo(90, 90);
ctx.lineTo(90, 50);
ctx.lineTo(50, 90);
ctx.fill();
var testpng = fs.createWriteStream("test.png");
testpng.write(canvas.toPng());
testpng.close();To create an instance of Canvas, use the createCanvas(width, height) method that is exposed
by the module. Use the getContext() method on the canvas to get a CanvasContext object.
-
width(integer)The width of the canvas in pixels.
-
height(integer)The height of the canvas in pixels.
-
backColor(color)Specifies the background color. See
fillStylebelow for allowed values. Default is transparent.
-
toPng([keywords])Renders the canvas as a PNG data stream and returns it as a
Buffer.keywordsis an optional dictionary defining the keywords to be written to the PNG stream. See https://www.w3.org/TR/PNG/#11keywords. -
getContext()Gets a CanvasContext object for drawing on this canvas.
-
toDataURL([type], [encoderOptions])Renders the canvas as a dataURI. Note that the two parameters are currently ignored since the only supported
typeisimage/png.
-
fillStyle(color)Specifies the fill color that is used when the
fill()method is called. Allowed values are:- 32 bit integers on the format
0xRRGGBBAA - string
"transparent" - strings on the format
"#2c4"(#RGB) - strings on the format
"#2c4f"(#RGBA) - strings on the format
"#22cc44"(#RRGGBB) - strings on the format
"#22cc44ff"(#RRGGBBAA) - strings on the format
"rgb(255, 124, 22)" - strings on the format
"rgb(255, 124, 22, 0.5)" - strings on the format
"rgb(255, 124, 22, 50%)" - strings on the format
"rgba(255, 124, 22, 0.5)" - strings on the format
"rgba(255, 124, 22, 50%)" - strings on the format
"rgb(23%, 45%, 75%)" - strings on the format
"rgb(23%, 45%, 75%, 0.5)" - strings on the format
"rgb(23%, 45%, 75%, 50%)" - strings on the format
"rgba(23%, 45%, 75%, 0.5)" - strings on the format
"rgba(23%, 45%, 75%, 50%)" - strings on the format
"hsl(134, 50%, 50%)" - strings on the format
"hsl(134, 50%, 50%, 0.5)" - strings on the format
"hsl(134, 50%, 50%, 50%)" - strings on the format
"hsla(134, 50%, 50%, 0.5)" - strings on the format
"hsla(134, 50%, 50%, 50%)" - strings on the format
"hwb(134, 50%, 50%)" - strings on the format
"hwb(134, 50%, 50%, 0.5)" - strings on the format
"hwb(134, 50%, 50%, 50%)" - named colors listed in CSS Color Module Level 4
- 32 bit integers on the format
-
beginPath()Removes all existing subpaths and begins a new path.
-
moveTo(x, y)Begins a new subpath by moving the cursor to the specified position.
-
lineTo(x, y)Inserts an edge between the last and specified position.
-
arc(x, y, radius, startAngle, endAngle, [anticlockwise])Adds an arc to the current subpath. See MDN for details.
-
closePath()Starts a new subpath that begins in the same point as the start and end point of the previous one.
-
clearRect(x, y, width, height)Fills the specified rectangle with fully transparent black without affecting the current paths.
-
fill([windingRule])Fills the defined paths.
windingRuledefines the winding rule to be used for determining which areas are covered by the current path. Valid values are"evenodd"and"nonzero". Default is"nonzero". -
fillRect(x, y, width, height)Fills the specified rectangle without affecting the current paths.
-
save()Saves the current transformation and fill style to a stack. The state can be restored using
restore(). -
restore()Restores the last state saved by
save()and removes the state from the state stack.
-
resetTransform() -
rotate(angle) -
scale(x, y) -
setTransform(a, b, c, d, e, f) -
transform(a, b, c, d, e, f) -
translate(x, y)
canvas-renderer is released under the MIT license.