New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

mini-gif

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mini-gif

A GIF encoding and decoding library written in Vanilla JS

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Welcome to mini-gif 👋

Version Documentation Maintenance

A GIF encoding and decoding library written in Vanilla JS

感谢

核心代码来自于以下两个库,该库只是做了部分整合方便使用。

解码GIF摘自 omggif

编码GIF摘自 jsgif

引入

In Browser

<script src="./dist/mini-gif.umd.js"></script>

ES Module

import minigif from 'minigif.js';

const { GIFEncoder, GIFDecoder } = minigif;

NodeJS

const minigif = require('minigif.js');

const { GIFEncoder, GIFDecoder } = minigif;

使用方法

具体使用见example文件夹下示例。

该库只有两个核心对象GIFDecoder和GIFEncoder。简单导出了另外两个库的对象,建议直接看源文件注释了解相关API。

GIFDecoder

GIFDecoder 接受一个GIF的二进制流(Unit8Array格式/browser Buffer/node)

const curFile = input.files[0];
const arrBuf = await curFile.arrayBuffer();
const buffer = new Uint8Array(arrBuf);
const gifReader = new minigif.GIFDecoder(buffer);

方法参数作用
numFrames--帧数
loopCount----播放次数
frameInfonumber获取某一帧的信息(不含帧数据)
decodeAndBlitFrameRGBAnumber,Uint8Array需要传入一个arr接受该帧的rgba数据
属性作用
frameInfo.xx
frameInfo.yy
frameInfo.widthw
frameInfo.heighth
frameInfo.delay该帧的delay时间
frameInfo.disposal可能为(0-4)/值为1的时候需要保留前一帧的数据,要不会有空白像素
GIFEncoder
const encoder = new minigif.GIFEncoder();
encoder.setRepeat(0);   // loop forever
encoder.setDelay(100);  // go to next frame every 100 ms
encoder.start();        // write header
encoder.addFrame(ctx);  // Render the frame from the canvas context.
ctx.font = '20px serif';
ctx.fillText('来追我啊!', 10, 50);
encoder.addFrame(ctx);  // Render the frame from the canvas context.
encoder.finish();       // finsh


const arr = encoder.stream().getUnit8Array();  //获取生成的Unit8Array
const file = new Blob([arr]);                  //生成文件
const url =  URL.createObjectURL(file);        //获取浏览器可用的地址

方法参数作用
start--写入GIF起始标志,之后才可以添加帧
setSizew,hsize/不设默认为第一帧取size
setDelaynumber 单位:1/100sSets the delay time between each frame, or changes it for subsequent frames(applies to last frame added)
setRepeatnumber播放次数/0为永久
setQualitynumber(1-20)default 10.(这个是采样率,值越小越精确,质量越高)
setDisposenumber disposal code--
setCommentstring--
setFrameRatenumberSets frame rate in frames per second.
setTransparentcolor值--
addFrameImageData/ctx添加帧/参数可以是ImageData或者ctx,ctx会自动获取画布的数据。
finish--结束添加数据,写入GIF结尾标志
cont--所以之前的操作都会被清空
stream--返回生成的ByteArray

// 添加了ByteArray.getUnit8Array 可用于浏览器端获取Unit8Array数据

支持一下

如果该库对你有帮助,可以点一下 ⭐️!

Keywords

FAQs

Package last updated on 15 Sep 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc