mirror of
https://github.com/danbulant/pngjs
synced 2026-07-08 04:30:33 +00:00
Documentation of sync api and adjustGamma. Fixes #14
This commit is contained in:
parent
6cf6d787bc
commit
dd5003a518
1 changed files with 54 additions and 3 deletions
57
README.md
57
README.md
|
|
@ -15,12 +15,14 @@ Based on [pngjs](https://github.com/niegowski/node-pngjs) with the follow enhanc
|
||||||
Known lack of support for:
|
Known lack of support for:
|
||||||
|
|
||||||
* Extended PNG e.g. Animation
|
* Extended PNG e.g. Animation
|
||||||
|
* Writing in different formats
|
||||||
|
* Synchronous write
|
||||||
|
|
||||||
Requirements
|
Requirements
|
||||||
============
|
============
|
||||||
|
|
||||||
Async - Node.js 0.10 / 0.12 / IO.js
|
* Async - Node.js 0.10 / 0.12 / IO.js
|
||||||
Sync - Node.js 0.12 / IO.js
|
* Sync - Node.js 0.12 / IO.js
|
||||||
|
|
||||||
Comparison Table
|
Comparison Table
|
||||||
================
|
================
|
||||||
|
|
@ -92,7 +94,7 @@ fs.createReadStream('in.png')
|
||||||
```
|
```
|
||||||
For more examples see `examples` folder.
|
For more examples see `examples` folder.
|
||||||
|
|
||||||
API
|
Async API
|
||||||
================
|
================
|
||||||
|
|
||||||
As input any color type is accepted (grayscale, rgb, palette, grayscale with alpha, rgb with alpha) but 8 bit per sample (channel) is the only supported bit depth. Interlaced mode is not supported.
|
As input any color type is accepted (grayscale, rgb, palette, grayscale with alpha, rgb with alpha) but 8 bit per sample (channel) is the only supported bit depth. Interlaced mode is not supported.
|
||||||
|
|
@ -171,6 +173,23 @@ fs.createReadStream('in.png')
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Property: adjustGamma()
|
||||||
|
Helper that takes data and adjusts it to be gamma corrected. Note that it is not 100% reliable with transparent colours because that requires knowing the background colour the bitmap is rendered on to.
|
||||||
|
|
||||||
|
In tests against PNG suite it compared 100% with chrome on all 8 bit and below images. On IE there were some differences.
|
||||||
|
|
||||||
|
The following example reads a file, adjusts the gamma (which sets the gamma to 0) and writes it out again, effectively removing any gamma correction from the image.
|
||||||
|
|
||||||
|
```js
|
||||||
|
fs.createReadStream('in.png')
|
||||||
|
.pipe(new PNG({
|
||||||
|
filterType: -1
|
||||||
|
}))
|
||||||
|
.on('parsed', function() {
|
||||||
|
this.adjustGamma();
|
||||||
|
this.pack().pipe(fs.createWriteStream('out.png'));
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
### Property: width
|
### Property: width
|
||||||
Width of image in pixels
|
Width of image in pixels
|
||||||
|
|
@ -187,9 +206,41 @@ Buffer of image pixel data. Every pixel consists 4 bytes: R, G, B, A (opacity).
|
||||||
### Property: gamma
|
### Property: gamma
|
||||||
Gamma of image (0 if not specified)
|
Gamma of image (0 if not specified)
|
||||||
|
|
||||||
|
# Sync API
|
||||||
|
|
||||||
|
## PNG.sync
|
||||||
|
|
||||||
|
### PNG.sync.read(buffer)
|
||||||
|
|
||||||
|
Take a buffer and returns a PNG image. The properties on the image include the meta data and `data` as per the async API above.
|
||||||
|
|
||||||
|
```
|
||||||
|
var data = fs.readFileSync('in.png');
|
||||||
|
var png = PNG.sync.read(data);
|
||||||
|
```
|
||||||
|
|
||||||
|
### PNG.adjustGamma(src)
|
||||||
|
|
||||||
|
Adjusts the gamma of a sync image. See thr async adjustGamma.
|
||||||
|
|
||||||
|
```
|
||||||
|
var data = fs.readFileSync('in.png');
|
||||||
|
var png = PNG.sync.read(data);
|
||||||
|
PNG.adjustGamma(png);
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
============
|
============
|
||||||
|
|
||||||
|
### 1.0.0 - 08/08/2015
|
||||||
|
- More tests
|
||||||
|
- source linted
|
||||||
|
- maintainability refactorings
|
||||||
|
- async API - exceptions in reading now emit warnings
|
||||||
|
- documentation improvement - sync api now documented, adjustGamma documented
|
||||||
|
- breaking change - gamma chunk is now written. previously a read then write would destroy gamma information, now it is persisted.
|
||||||
|
|
||||||
### 0.0.3 - 03/08/2015
|
### 0.0.3 - 03/08/2015
|
||||||
- Error handling fixes
|
- Error handling fixes
|
||||||
- ignore files for smaller npm footprint
|
- ignore files for smaller npm footprint
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue