Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cesiumlabs/gif

GIF Encoder/Decoder for Canvacord
https://github.com/cesiumlabs/gif

canvacord gif-extract-frames gif-frames gifdecoder gifencoder

Last synced: 27 days ago
JSON representation

GIF Encoder/Decoder for Canvacord

Awesome Lists containing this project

README

        

# @canvacord/gif
GIF Encoder and Decoder for **[Canvacord](https://npmjs.com/package/canvacord)**.

# Installation

```sh
$ npm install --save @canvacord/gif

// or
$ yarn add @canvacord/gif
```

# Examples
## Decoding GIF

```js
// es6
import { Decoder } from '@canvacord/gif';
import { readFileSync, createWriteStream } from 'fs';

// cjs
const { Decoder } = require('@canvacord/gif');
const { readFileSync, createWriteStream } = require('fs');

const source = readFileSync('./img.gif');
const decoder = new Decoder(source);
const rawFrames = decoder.decode();

// log raw frames data
console.log(rawFrames);

// get png image of each frame
const pngFrames = decoder.toPNG(rawFrames);

for (let i = 0; i < pngFrames.length; i++) {
const frame = pngFrames[i];
frame.pipe(createWriteStream(`./frame_${i}.png`));
}
```

## Encoding raw frame to GIF

```js
// es6
import { Decoder, Encoder } from '@canvacord/gif';
import { readFileSync, createWriteStream } from 'fs';

// cjs
const { Decoder, Encoder } = require('@canvacord/gif');
const { readFileSync, createWriteStream } = require('fs');

const source = readFileSync('./img.gif');
const decoder = new Decoder(source);
const rawFrames = decoder.decode();

// encode each frames into gif
for (let i = 0; i < rawFrames.length; i++) {
const frame = new Encoder(rawFrames[i]).encode();
frame.pipe(createWriteStream(`./frame_${i}.gif`));
}
```