GIF

Awesome GIF Awesome

>精选的精选列表 GIF 资源.

与图形交换格式(GIF)相关的工具,脚本,库,示例和其他资源的列表.

General Tools

Utilities

  • Gifgen - 简单的高品质GIF编码
  • Gifify - 将任何视频文件转换为优化的动画GIF
  • Gifify (not the same) - 将屏幕录制转换为GIF
  • Gifsicle - 有损GIF压缩机
  • Gifs - GIF的存放地点
  • Gifshot - 由雅虎从媒体创建动画GIF. (demo)
  • Gifsockets - 使用动画GIF作为传输的实时通信库
  • X-gif - 用于灵活GIF播放的Web组件
  • GifW00t - JavaScript网络录音机
  • gif-machine - 从Youtube视频创建GIF
  • gifstreaming - 实时视频流服务器
  • Screengif - 制作动画GIF截屏视频
  • vnc-over-gif - 通过http将屏幕更新作为动画GIF提供
  • gifdeck - 将SlideShares转换为动画GIF
  • Gifbot - GIF搜索Slack
  • Gif-camera - 使用网络摄像头创建动画GIF
  • Gifline - Chrome扩展程序,可将GIF放入您的电子邮件中
  • Gifdrop - 为您的gif图像集创建一个存储库
  • Gh-gif - NodeGH插件,用于使用GIF反应评论拉取请求/问题
  • Tty2gif - 将脚本及其输出记录为二进制和GIF格式
  • Giftoppr - 使用Dropbox同步您喜爱的GIF
  • Gifit - Chrome扩展程序,可通过YouTube视频制作GIF
  • Ccapture.js - 捕获使用HTML5画布创建的动画
  • Kap - 美丽的开源应用程序捕获您的屏幕并导出到GIF.
  • Gifit (the other one) - 在stdout,ala$ gifit kittens中的markdown中搜索giphy GIF.
  • gifski - 基于libimagequant的高品质GIF编码器.

Libraries

ActionScript

C++

  • Node-gif - 制作GIF的C ++库
  • Gif-h - 用于创建动画GIF的C ++单头库
  • OfxGifEncoder - C ++ openframeworks插件,用于导出动画GIF

C#

- [dot-screencap](https://github.com/Speiser/dot-screencap) - 一个简单的图书馆,用于记录您的屏幕并将其保存为动画GIF - [WpfAnimatedGif](https://github.com/thomaslevesque/WpfAnimatedGif) - 一个简单的库,用于在WPF中显示动画GIF图像 - [XamlAnimatedGif](https://github.com/thomaslevesque/XamlAnimatedGif) - 一个简单的库,用于在XAML应用程序中显示动画GIF图像(WPF,WinRT,Windows Phone) - [AnimatedGif](https://github.com/mrousavy/AnimatedGif) - 用于读取和创建动画GIF的高性能.NET库 #### Haxe - [Gif](https://github.com/snowkit/gif) - Haxe GIF编码器 #### Java - [Android-gif-drawable](https://github.com/koral--/android-gif-drawable) - 用于在Android上显示动画GIF的视图和绘图 - [gifanimateddrawable](https://github.com/Hipmob/gifanimateddrawable) - 使用动画GIF作为Android Drawable - [GifView](https://github.com/RoiSoleil/GifView) - 用于处理GIF的android库 - [Gif Movie View](https://github.com/sbakhtiarov/gif-movie-view) - 用于显示GIF动画的Android View小部件 - [GifImageView](https://github.com/felipecsl/GifImageView) - 处理动画GIF图像的Android ImageView - [Gif-animation](https://github.com/extrapixel/gif-animation) - 处理库以播放和导出GIF - [Android-gif-encoder](https://github.com/nbadal/android-gif-encoder) - 适用于Android的动画GIF编码器 - [GIFDroid](https://github.com/quackware/GIFDroid) - Android视频到GIF转换器 - [Android-GifStitch](https://github.com/CaptPhunkosis/Android-GifStitch) - 创建和分享动画GIF #### JavaScript - [Gif.js](https://github.com/jnordberg/gif.js) - Javascript - 从DOM创建GIF - [Omggif](https://github.com/deanm/omggif) - Javascript - GIF 89a编码器和解码器 - [Animated_GIF](https://github.com/sole/Animated_GIF) - 用于创建动画GIF的Javascript库 - [Gifffer](https://github.com/krasimir/gifffer) 阻止动画GIF自动播放的JavaScript库 - [Gifplayer](https://github.com/rubentd/gifplayer) - jquery插件播放和停止动画GIF - [Jsgif](https://github.com/shachaf/jsgif) - JavaScript GIF解析器和播放器 - [node-gify](https://github.com/tj/node-gify) - Javascript使用ffmpeg和gifsicle将视频转换为GIF - [Gifencoder](https://github.com/eugeneware/gifencoder) - node.js的服务器端动画GIF生成 - [Gif-video](https://github.com/hughsk/gif-video) - Javascript将GIF图像转换为HTML5就绪视频 - [Gif-player](https://github.com/apankrat/gif-player) - Javascript中的按需GIF加载器/播放器 - [GifgifLab-face](https://github.com/Viral-MediaLab/gifgifLab-face) - 面部情感探测器 - [node-youtube](https://github.com/javascipt/node-youtube) - Youtube到快照和GIF. #### PHP - [GifCreator](https://github.com/Sybio/GifCreator) - 从多个图像创建动画GIF的PHP类 - [Spacer.gif](https://github.com/msng/spacer.gif) - PHP脚本提供spacer.gif 1x1 - [GifFrameExtractor](https://github.com/Sybio/GifFrameExtractor) - PHP类,用于分隔动画GIF的所有帧 #### Objective-C - [AnimatedGIFImageSerialization](https://github.com/mattt/AnimatedGIFImageSerialization) - 从动画GIF图像数据解码UIImage - [UIimage from GIF](https://github.com/mayoff/uiimage-from-animated-gif) - 加载动画GIF的UIImage类别 - [GIFRefreshControl](https://github.com/cyndibaby905/GIFRefreshControl) - “推特音乐”和“雅虎天气”就像拉动刷新控制一样 - [UIImageView-PlayGIF](https://github.com/yfme/UIImageView-PlayGIF) - 用于播放GIF的UIImageView类别/子类 - [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage) - FlipBoard for iOS的Gif引擎 - [Animated-GIF-iPhone](https://github.com/arturogutierrez/Animated-GIF-iPhone) - 支持iOS上的动画GIF - [UzysAnimatedGifPullToRefresh](https://github.com/uzysjung/UzysAnimatedGifPullToRefresh) - 使用动画GIF将PullToRefresh添加到任何scrollView - [SvGifView](https://github.com/smileEvday/SvGifView) - iOS加载并显示GIF - [GifHUD](https://github.com/cemolcay/GiFHUD) - iOS进度仅用于显示动画GIF图像 - [Video-Background GIF](https://github.com/ElvinJin/Video-Background-GIF) - iOS视频背景GIF - [AnimatedGifExample](https://github.com/kasatani/AnimatedGifExample) - iOS动画和透明GIF - [OLImageView](https://github.com/dtorres/OLImageView) - iOS OLImage和OLImageView支持动画GIF #### Swift - [SwiftyGif](https://github.com/kirualex/SwiftyGif) - 高性能且易于使用的Gif引擎 - [Gifu](https://github.com/kaishin/gifu) - Swift中对iOS的动画GIF支持 - [SwiftGif](https://github.com/swiftgif/SwiftGif) - 支持GIF的UIImage扩展 ### GUI - [Glyph](http://www.glyph.video/) - 用于从视频生成无缝循环GIF和电影图的工具 - [Qgifer](https://sourceforge.net/projects/qgifer/) - [GIFs](https://github.com/orta/GIFs) - 用于查找GIF的Mac App - [VineGifR](https://github.com/caraesten/VineGifR ) - Mac应用程序将Vine视频转换为GIF - [GifPro](https://github.com/unixpickle/GifPro) - 适用于Mac的GIF编码器 - [AnimatedGif](https://github.com/Waitsnake/AnimatedGif) - 用于播放GIF的Mac屏幕保护程序 ### Hosting - [Gfycat](https://gfycat.com) - 最大GIF /视频长度:15秒. 最大文件上传量为300Mb - [Imgur](https://imgur.com) - 最大文件上传量为50MB ### Online Tools - [Vid2gif](https://imgur.com/vidgif) - 视频到GIF由imgur - [EzGif](https://ezgif.com/) - 在线GIF制造商和图像编辑器 - [Giflr](https://giflr.com/) - 用于制作或重新混合动画GIF的网络应用程序 - [Gif.gf](http://www.gif.gf/labs/face) - Provide a matching GIF for your face ### Community - [Giphy.com](https://giphy.com) - [9gag.com/gif](https://9gag.com/gif) - [Reactionsgifs](http://www.reactiongifs.com/) - [Educational Gifs](https://www.reddit.com/r/educationalgifs/) ### Niche - [Starwars-dot-gif](https://github.com/LindseyB/starwars-dot-gif) - 用于从星球大战中生成GIF的Python脚本 ### Scripts #### Frames to GIF FFmpeg
ffmpeg -f image2 -i image%d.jpg animated.gif
Imagemagick
convert -delay 20 -loop 0 frames * .png animated.gif
用于GraphicsMagick,ImageMagick,FFmpeg的Bash脚本(```frames2gif.sh```)
#!/bin/bash
if [ $# -ne 5 ]; then
    echo“请提供moviename和目录存储框架的位置”
    echo“./frames2gif.sh [directory] ​​[movie.mp4] [filename.gif] [gm | im | ffmpeg] [png | jpg]”
    退出1
fi
     if [“png”==“$ 5];  然后
        后缀= “PNG”
    其他
        后缀= “JPG”
    是

    CONVERT = $(转换)
    GM = $(以gm为单位)
    FFMPEG = $(其中ffmpeg)
    FFPROBE = $(其中ffprobe)
    FPS = $($ FFPROBE -show_streams -select_streams v -i“$ 2”2> / dev / null | grep“r_frame_rate”| cut -d'=' -  f2 | cut -d'/'-f1)
    回声“FPS:$ {FPS}if [ "im" == "$4" ]; then # use imagemagick
    FPS = $(echo“1 / $ {FPS} * 100| bc -l)
    $ CONVERT“$ 1 /*.$ {suffix}” -  delay $ {FPS} -loop 0“$ 3elif [ "gm" == "$4" ]; then # use graphicsmagick
    FPS = $(echo“1 / $ {FPS} * 100| bc -l)
    $ GM转换“$ 1 /*.$ {suffix}”-delay $ {FPS} -loop 0“$ 3else # use crappy gif-algorithm from ffmpeg
    $ FFMPEG -f image2 -framerate $ {FPS} -i“$ 1 /%08d.$ {suffix}”“$ 3fi
From [DeepDreamVideo](https://github.com/graphific/DeepDreamVideo), [source](https://github.com/graphific/DeepDreamVideo/blob/master/frames2gif.sh) #### GIF to frames
ffmpeg -i video.mpg image%d.jpg
convert -coalesce animated.gif image%05d.png
#### High quality GIF 用ffmpeg /基于此 [article](http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html) - 生成调色板:
#!/bin/sh
start_time=30
duration=3
ffmpeg -y -ss $ start_time -t $ duration -i input.avi \
-vf fps = 10,scale = 320:-1:flags = lanczos,palettegen palette.png
- 使用调色板输出GIF:
#!/bin/sh
start_time=30
duration=3
ffmpeg -ss $ start_time -t $ duration -i input.avi -i palette.png -filter_complex \
“fps = 10,scale = 320:-1:flags = lanczos [x]; [x] [1:v] paletteuse”output.gif
[article](http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html) #### Optimize GIF
convert -layers优化output.gif output_optimized.gif
#### Lossy GIF Compressor
./gifsicle -O3 --lossy = 80 -o lossy-compressed.gif input.gif
[Lossy Gif](https://kornel.ski/lossygif) #### Making GIF from video
来自moviepy.editor import *

clip =VideoFileClip(“input.avi”)
        .subclip((4,00.00),(5,00.00))
        .resize0.3))
clip.write_gif("output.gif")
[article](http://zulko.github.io/blog/2014/01/23/making-animated-gifs-from-video-files-with-python/#converting-a-video-excerpt-into-a-gif) #### Cinemagraphs 冻结一个地区
来自moviepy.editor import *

clip =VideoFileClip(“input.avi”)
        .subclip((4,00.00),(5,00.00))
        .resize0.3
        .fxvfx.freeze_regionoutside_region =170,230,380,320)))
clip.write_gif(“output.gif”,fps = 15
[article](http://zulko.github.io/blog/2014/01/23/making-animated-gifs-from-video-files-with-python/#freezing-a-region)
ffmpeg \
-ss ${starttime} -t ${duration} -i ${vidfile}                         `# body of loop` \
-ss TODO ${starttime} MINUS ${duration} -t ${fadetime} -i ${vidfile}  `# lead-in for crossfade` \
-loop 1 -i ${stillfile}                                               `# masked still image` \
-filter_complex“
  [0:v]setpts=PTS-STARTPTS[vid];                                      `# speed adjustment - not needed here, so noop`
  color=white,scale=3840x2160,fade=in:st=0:d=${fadetime}[alpha];      `# crossfade alpha, double length ahead of speed change`
  [1:v][alpha]alphamerge[am];                                         `# apply alpha to lead-in`
  [am]setpts=PTS+(${duration}-${fadetime})/TB[layer2];                  `# speed adjustment and offset for lead-in`
  [vid][layer2]overlay[oo];                                           `# overlay for crossfade`
  [oo][2:v]overlay=shortest=1[out1];                                  `# overlay still image`
  [out1]crop=w=${cropfactor}*iw:h=${cropfactor}*ih:y=${yoffset}*ih,scale=${outputwidth}:-1, `# crop and scale`
  eq=gamma=${gamma}:contrast=${contrast}:saturation=${saturation},unsharp                   `# final adjustments`
“-an output.mp4
by [Roger Barnes](https://bitbucket.org/snippets/rbarnesatl/6jRB) #### Perfect Loop
moviepy.editor导入为mp
来自moviepy.video.tools.cuts导入FramesMatches

clip = mp.VideoFileClip(“input.avi”).resize0.3
scenes = FramesMatches.from_clipclip10,3

selected_scenes = scenes.select_scenes2,1,4,0​​.5
selected_scenes.write_gifsclip.resizewidth = 450),“./ output_directory”)
[article](http://zulko.github.io/blog/2015/02/01/extracting-perfectly-looping-gifs-from-videos-with-python-and-moviepy/) #### Youtube video to GIF - 通过youtube-dl下载然后转换它.
youtube-dl https://www.youtube.com/watch?v=V2XpsaLqXc8
[Youtube-dl](https://rg3.github.io/youtube-dl/) - 与 [vid2gif](https://imgur.com/vidgif) 在线 - [source](https://github.com/jimgur/gif) #### Grabbing each frame of an HTML5 Canvas Using [PhantomJS](https://phantomjs.org). 这个例子 [canvas](http://www.effectgames.com/demos/canvascycle/?sound=0).
var webPage = require'webpage';
var fs = require'fs';
var page = webPage.create();

var NB_FRAME = 100;
var current = 0;

page.open('http://www.effectgames.com/demos/canvascycle/?sound=0',
functionstatus{
  ifstatus ===success”){
      var current = 0;
      var grabber = setIntervalfunction(){
          var frame = page.evaluatefunction(){
           return document.getElementById'mycanvas'.toDataURL(“image / png”).split(“,”)[1];
          });
          fs.write(“./ frame-+ current +.png”,atobframe),'wb';
      if++ current === NB_FRAME{
         window.clearInterval采集;
         phantom.exit0;
      }
    }, 1000);
  }
});
或使用 [ccapture.js](https://github.com/spite/ccapture.js). ### Miscellaneous - [Why is the GIF I created so slow?](https://superuser.com/questions/569924/why-is-the-gif-i-created-so-slow/569967) - 使用ImageMagick解决有关GIF速度的问题. ## Use 使用此列表的最佳方法是: - 使用命令 + F搜索内容 ## Credits **[Craig Davison](https://davison.io)** [![GitHub](https://img.shields.io/github/followers/davisonio.svg?style=social&label=Follow%20@davisonio)](https://github.com/davisonio) [![Twitter](https://img.shields.io/twitter/follow/davisonio.svg?style=social)](https://twitter.com/davisonio) ...and [contributors](https://github.com/davisonio/awesome-gif/graphs/contributors). **[Contributions are welcome!](https://github.com/davisonio/awesome-gif/blob/master/contributing.md)** ## License 除非另有说明: - 版权所有©2017+ [Craig Davison](https://davison.io) . 许可下 [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/). 基于 [recovered list](https://github.com/sindresorhus/awesome/issues/872): - 版权所有©2015-2016 [Ismail Baaj](http://ismailbaaj.fr).