Easily create image files with Deno
This is a simple library for Deno to create PNG (and other image types in the feature) files.
//import the module
import { PNGImage } from 'https://deno.land/x/dpng/mod.ts'
//create a PNG file
const png = new PNGImage(512, 512)
//generating a color to use in setPixel
const red = png.createRGBColor({ r: 255, g: 0, b: 0, a: 1 })
//setting one pixel
png.setPixel(10, 10, red)
//get the base64 encoded image
const base64String = png.getBase64()
//let's save the image
Deno.writeFileSync('./test/img/test.png', png.getBuffer())
We have plenty of tools to modify the desired image. Here's a list of all of them.
Get the buffer (Uint8Array
) of the image file
This can be used to save the image later, using Deno.writeFileSync
Get the base64 encoded string of the created image
Get the base64 encoded string of the created image with a data url, so you can utilize it inside an img
tag in html, using the src
attribute
Create a valid RGB (rgba) color that you can use with setPixel
Get the color of a pixel
Getting the index of a pixel
Modifying a pixel
Draw a line inside the image
Draw a rectangle inside the image
drawBorderedRect (x1: number, y1: number, x2: number, y2: number, borderSize: number, insideColor: number, outsideColor: number): void
Draw a rectangle with a border/outline
Draw a circle inside the image
We do not provide a write()
or save()
function, as we find it unnecessary. Deno has an easy to use way to write files and we don't want to overcomplicate this module. To save an image, use the built in Deno.writeFileSync()
function:
Deno.writeFileSync('./assets/img/denos_land.png', png.getBuffer())
Make sure to add flag --allow-write
, when running your code.
- Fix bordered circle
- A
createColor
function that converts css-style colors to<RGB>
type colors -
getPixel
or an alternative new function to return css-style colors (maybe with a param) - Add loading
buffers
/Uint8Array
s
The base of this library is largely ported from pnglib-es6. Thank you very much for providing a simple, yet amazing library