@airplanegobrr/pixelencode
v1.0.0
Published
Encode data into a picture!
Downloads
12
Readme
PixelEncode
Encode/decode data into a picture
Simple project to turn data into a picture!
Installing
Install via npm:
npm install @airplanegobrr/pixelencode
Using
Using this is very simple
const { PixelEncode } = require("@airplanegobrr/pixelencode")
let ed = new PixelEncode()
let dataToEncode = "Hello, World!"
ed.encode(dataToEncode).then(async encodedPicture=>{
// encodedPicture is a PNG buffer with the data encoded
let decoded = await ed.decode(encodedPicture)
console.log(decoded.toString()) // Output: Hello, World!
})Constructor Parameters
You can customize the PixelEncode class by passing the following parameters:
let ed = new PixelEncode(mode, blockSize, maxHSL, width, height);| Parameter | Default | Description |
| ----------- | ---------- | ----------- |
| Mode | "base64" | Encoding mode: base64, hex, or binary. I would stick to using base64. Determines how data is encoded into colors.|
| blockSize | 3 | Size of the blocks. Larger blocks may help with compression but increase output size. |
| maxHSL | 330 | Upper limit for HSL values. Affects the range of colors used in the picture. |
| width | 3840 | Width of the output image buffer. |
| height | 2160 | Height of the output image buffer. |
Handling Compression
When uploading output buffers to platforms like Discord or YouTube, re-downloaded images may be compressed. This compression can distort pixel data, making it impossible to decode the original information.
This is a known issue and will be looked into in the future, some stuff is already in to hopeful* help this issue.
To make compression less impactful, try to use a different mode and a bigger blockSize
Todo
- [ ] Split large data into many arrays/pictures
- [ ] Better compression reading
