GIF

Awesome GIF Awesome

>精选的超赞清单 GIF 资源.

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

General Tools

Utilities

  • Gifgen -简单的高质量GIF编码
  • Gifify -将任何视频文件转换为优化的动画GIF
  • Gifify (not the same) -将屏幕录制转换为GIF
  • Gifsicle -有损GIF压缩器
  • Gifs -GIF的存储位置
  • Gifshot -通过Yahoo从媒体创建动画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搜索松弛
  • 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,$$ gifit小猫的markdown中获得搜索结果giphy GIF.
  • gifski -基于libimagequant的高质量GIF编码器.
  • Gifcurry -Haskell为GIF制作者构建的开源编辑器.

Libraries

ActionScript

C++

  • Node-gif -C ++库制作GIF
  • Gif-h -C ++单头库,用于创建动画GIF
  • 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应用程序(WPF,WinRT,Windows Phone)中显示动画GIF图像的简单库 - [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) -分隔动画GIF的所有帧的PHP类 #### 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) -“推特音乐”和“ Yahoo! Weather”,如“按需刷新” - [UIImageView-PlayGIF](https://github.com/yfme/UIImageView-PlayGIF) -用于播放GIF的UIImageView类别/子类 - [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage) - Gif engine for iOS by FlipBoard - [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) -Mac屏幕保护程序,用于播放GIF ### Hosting - [Gfycat](https://gfycat.com) -最大GIF /视频长度:15秒. 档案上传上限为300Mb - [Imgur](https://imgur.com) -档案上传上限为50MB ### Online Tools - [Vid2gif](https://imgur.com/vidgif) -视频由imgur转换为GIF - [EzGif](https://ezgif.com/) -在线GIF制作器和图片编辑器 - [Giflr](https://giflr.com/) -用于制作或重新混合GIF动画的网络应用 - [Gif.gf](http://www.gif.gf/labs/face) -为您的脸提供匹配的GIF ### 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 animation.gif
Imagemagick
转换-延迟20-循环0帧* .png animation.gif
用于GraphicsMagick,ImageMagick,FFmpeg的Bash脚本(``frames2gif.sh`'')
#!/bin/bash
if [ $# -ne 5 ]; then
    回声“请提供电影名称和目录来存储帧”
    回声“ ./frames2gif.sh [目录] [movie.mp4] [文件名.gif] [gm | im | ffmpeg] [png | jpg]”
    1号出口
fi
     如果[“ png” ==“ $ 5];  然后
        suffix =“ png”
    其他
        suffix =“ jpg”
    是

    CONVERT = $(转换)
    GM = $(哪个gm)
    FFMPEG = $(其中ffmpeg)
    FFPROBE = $(其中ffprobe)
    FPS = $($ FFPROBE -show_streams -select_streams v -i“ $ 22> / dev / null | grep“ r_frame_rate” | cut -d'='-f2 | cut -d'/'-f1)
    回声“ FPS:$ {FPS}if [ "im" == "$4" ]; then # use imagemagick
    FPS = $(回显“ 1 / $ {FPS} * 100| bc -l)
    $ CONVERT“ $ 1 /*.$ {suffix}” -delay $ {FPS} -loop 0“ $ 3elif [ "gm" == "$4" ]; then # use graphicsmagick
    FPS = $(回显“ 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
转换-coalesce animation.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,palettegenpalette.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
转换-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导入*

剪辑=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导入*

剪辑=VideoFileClip(“ input.avi”)
        .subclip((4,00.00),(5,00.00))
        .resize0.3
        .fxvfx.freeze_regionoutside_region =170230380320)))
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`
“-一个output.mp4
by [Roger Barnes](https://bitbucket.org/snippets/rbarnesatl/6jRB) #### Perfect Loop
将moviepy.editor导入为mp
从moviepy.video.tools.cuts导入FramesMatches

剪辑= mp.VideoFileClip(“ input.avi”).resize0.3
场景= FramesMatches.from_clipclip103

selected_scenes =场景.select_scenes2140.5
selected_scenes.write_gifsclip.resizewidth = 450),“ ./outputs_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',
功能状态{
  if状态===成功”){
      var current = 0;
      var catchber = setIntervalfunction(){
          var frame = page.evaluatefunction(){
           返回document.getElementById'mycanvas'.toDataURL(“ image / png”).split(“,”)[1];
          });
          fs.write(“ ./ frame- + current + .png”,atobframe),'wb';
      如果++ 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).