mirror of
https://github.com/kettek/png-js
synced 2025-03-14 06:24:30 -07:00
Add README
This commit is contained in:
parent
919494ddbc
commit
8654790641
97
README.md
Normal file
97
README.md
Normal file
|
@ -0,0 +1,97 @@
|
|||
# png-js
|
||||
This is a modified version of [png.js](https://github.com/react-pdf/png.js) that is intended to be used for palette swapping within the browser.
|
||||
|
||||
## Usage
|
||||
The following shows the process of loading a PNG file and rendering it to a canvas with its palette data reversed.
|
||||
|
||||
```
|
||||
import { IndexedPNG } from '@kettek/png-js/src'
|
||||
import { readFile } from 'fs'
|
||||
|
||||
readFile("my_png.png", (err, data) => {
|
||||
if (err) throw err
|
||||
|
||||
// Create an IndexedPNG object from our data.
|
||||
let png = new IndexedPNG(data)
|
||||
|
||||
// Preemptively decode PNG data (optional).
|
||||
png.decode()
|
||||
|
||||
// Convert our PNG data into an ImageData, usable by a Canvas. Passed options provide a reversed palette and a clipping.
|
||||
png.toImageData({
|
||||
palette: png.decodePalette().reverse(),
|
||||
clip: {
|
||||
x: 16,
|
||||
y: 16,
|
||||
w: 32,
|
||||
h: 32
|
||||
}
|
||||
})
|
||||
.then(imageData => {
|
||||
// This presumes at least one canvas element exists on the page.
|
||||
document.getElementsByTagName('canvas')[0]
|
||||
.getContext('2d')
|
||||
.putImageData(imageData, 0, 0)
|
||||
})
|
||||
.catch(err => {
|
||||
throw err
|
||||
})
|
||||
})
|
||||
```
|
||||
|
||||
## Types
|
||||
### IndexedPNG
|
||||
|
||||
IndexedPNG([Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer))
|
||||
: processes PNG data but does not decode it.
|
||||
|
||||
async decodePixels()
|
||||
: Decodes the PNG pixel data and returns it.
|
||||
|
||||
decodePalette()
|
||||
: Decodes the PNG palette and returns it as a [Palette](#palette).
|
||||
|
||||
async decode()
|
||||
: Decodes the palette and the pixel data of the PNG data passed into the constructor. Calls `decodePixels()` and `decodePalette()`.
|
||||
|
||||
[ImageData](https://developer.mozilla.org/en-US/docs/Web/API/ImageData) async toImageData([ImageDataOptions](#imagedataoptions))
|
||||
: Returns ImageData. Calls `decode()` automatically if PNG has not been decoded.
|
||||
|
||||
### ImageDataOptions
|
||||
Object containing options to apply during `toImageData()`.
|
||||
|
||||
|
||||
| Property | Type | Description
|
||||
|----------|---------------------|---------------
|
||||
| palette | [Palette](#palette) | Palette data to use for decoding.
|
||||
| clip | [Clip](#clip) | Clipping options to use for decoding.
|
||||
|
||||
#### Palette
|
||||
A [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer) or Array containing the palette RGBA palette data.
|
||||
|
||||
```
|
||||
let palette = [
|
||||
255, 0 , 0 , 255, // Index 0
|
||||
0 , 255, 0 , 255, // Index 1
|
||||
0 , 0 , 255, 255, // Index 2
|
||||
...
|
||||
]
|
||||
```
|
||||
#### Clip
|
||||
Options to clip pixel data.
|
||||
|
||||
| Property | Type | Defaults | Description
|
||||
|----------|--------|--------------|-------------
|
||||
| x | Number | 0 | Starting X coordinate.
|
||||
| y | Number | 0 | Starting Y coordinate.
|
||||
| w | Number | width - x | Width of clip.
|
||||
| h | Number | height - y | Height of clip.
|
||||
|
||||
```
|
||||
let clip = {
|
||||
x: 16,
|
||||
y: 16,
|
||||
w: 32,
|
||||
h: 32,
|
||||
}
|
||||
```
|
Loading…
Reference in New Issue
Block a user