pbm-js/README.md

65 lines
2.0 KiB
Markdown

# pbm-js
JavaScript library for parsing IFF PBM files.
This is the format used by the PC version of Deluxe Paint II and is different from the Amiga version.
## Features
- Written using ES6 modules, runs out of the box in modern browsers.
- 100% plain JavaScript. No dependencies.
- Compatible with all [Mark J. Ferrari](https://www.markferrari.com/about/)'s artwork I could find.
Try it out at [https://michaelshmitty.github.io/pbm-js/](https://michaelshmitty.github.io/pbm-js/). You will need to supply your own IFF PBM files. All processing is done in your browser, no data is sent to any server.
## Usage
### In the browser
_Also see `index.html` and `main.js` for a more elaborate example that renders the image and palette data to an html5 canvas and supports color cycling._
```javascript
import parsePBM from "./src/pbm.js";
fetch("/assets/TEST.LBM")
.then((response) => {
return response.arrayBuffer();
})
.then((buffer) => {
const image = parsePBM(buffer);
console.log(image);
});
```
### In Node.js
```javascript
import * as fs from "fs";
import parsePBM from "./src/pbm.js";
const data = fs.readFileSync("./tests/fixtures/VALID.LBM");
const image = parsePBM(data.buffer);
console.log(image);
```
## Testing
```sh
# Install test framework and dependencies (requires Node.js)
npm install
# Run the tests
npm run test
```
## References
- [libiff](https://github.com/svanderburg/libiff): Portable, extensible parser for the Interchange File Format (IFF). Well documented and very detailed C implementation of the IFF file format by [Sander van der Burg](http://sandervanderburg.nl/index.php).
- [DPaint-js](https://github.com/steffest/DPaint-js): Web based image editor, modeled after the legendary Deluxe Paint with a focus on retro Amiga file formats: read and write Amiga icon files and IFF ILBM images.
## Contributing
If you find an IFF PBM file that cannot be parsed by this library, please open an issue or send it to me if licensing / copyright permits you to share it.
Suggestions, bug reports and pull requests welcome.