All Projects → ImageOptim → Gifski

ImageOptim / Gifski

Licence: other
GIF encoder based on libimagequant (pngquant). Squeezes maximum possible quality from the awful GIF format.

Programming Languages

rust
11053 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Gifski

makesweet
Put pictures into animations from the command line.
Stars: ✭ 18 (-99.26%)
Mutual labels:  gif, gif-creator, gif-animation
cast2gif
Tool to render Asciinema cast files to GIFs, *without* using Electron or a web browser. Written in Rust.
Stars: ✭ 23 (-99.05%)
Mutual labels:  gif, gif-creator, gif-animation
glips
screen clip to gif on web
Stars: ✭ 18 (-99.26%)
Mutual labels:  gif, gif-creator, gif-animation
sail
The missing small and fast image decoding library for humans (not for machines) ⛵ https://sail.software
Stars: ✭ 206 (-91.48%)
Mutual labels:  gif, gif-animation
mpv-gif-generator
Creates animated gifs using mpv hotkeys
Stars: ✭ 32 (-98.68%)
Mutual labels:  gif, gif-creator
gif-player
Control your animated GIFs
Stars: ✭ 120 (-95.04%)
Mutual labels:  gif, gif-animation
gif-creator
To create a GIF image with user specified duration. [简单实用] 生成自定义延时的GIF图像。
Stars: ✭ 32 (-98.68%)
Mutual labels:  gif, gif-creator
TTFancyGifDialog-Android
TTFancyGifDialog makes your Android Dialog Fancy and more Beautiful. A library that makes normal Android Dialog to high level Dialog with many styling options and fully customizable. Make dialog from few lines of code.
Stars: ✭ 61 (-97.48%)
Mutual labels:  gif, gif-animation
KGySoft.Drawing
KGy SOFT Drawing is a library for advanced image, icon and graphics handling.
Stars: ✭ 27 (-98.88%)
Mutual labels:  gif, gif-animation
imagor
Fast, Docker-ready image processing server in Go and libvips
Stars: ✭ 2,276 (-5.83%)
Mutual labels:  gif, gif-animation
AGMobileGiftInterface
simplified interaction with GIF animations
Stars: ✭ 40 (-98.35%)
Mutual labels:  gif, gif-animation
Gifski
🌈 Convert videos to high-quality GIFs on your Mac
Stars: ✭ 5,691 (+135.46%)
Mutual labels:  gif, gif-animation
Compress Images
Minify size your images. Image compression with extension: jpg/jpeg, svg, png, gif. NodeJs
Stars: ✭ 331 (-86.31%)
Mutual labels:  gif, pngquant
Image Optimizer
Image optimization / compression library. This library is able to optimize png, jpg and gif files in very easy and handy way. It uses optipng, pngquant, pngcrush, pngout, gifsicle, jpegoptim and jpegtran tools.
Stars: ✭ 785 (-67.52%)
Mutual labels:  gif, pngquant
Imageviewer
A simple and customizable Android full-screen image viewer 一个简单且可自定义的Android全屏图像浏览器
Stars: ✭ 1,889 (-21.85%)
Mutual labels:  gif
Gifenc
small C GIF encoder
Stars: ✭ 164 (-93.21%)
Mutual labels:  gif
Pyecharts Snapshot
renders the output of pyecharts as png, jpeg, gif, svg, eps, pdf and raw base64
Stars: ✭ 142 (-94.12%)
Mutual labels:  gif
Autocser
AutoCSer is a high-performance RPC framework. AutoCSer 是一个以高效率为目标向导的整体开发框架。主要包括 TCP 接口服务框架、TCP 函数服务框架、远程表达式链组件、前后端一体 WEB 视图框架、ORM 内存索引缓存框架、日志流内存数据库缓存组件、消息队列组件、二进制 / JSON / XML 数据序列化 等一系列无缝集成的高性能组件。
Stars: ✭ 140 (-94.21%)
Mutual labels:  gif
Hei.captcha
一个跨平台的图形验证码生成工具包/.net core
Stars: ✭ 172 (-92.88%)
Mutual labels:  gif
Awesomeimagepicker
Awesome Image Picker library will pick images/gifs with beautiful interface. Supports image or gif, Single and Multiple Image selection.
Stars: ✭ 160 (-93.38%)
Mutual labels:  gif

gif.ski

Highest-quality GIF encoder based on pngquant.

gifski converts video frames to GIF animations using pngquant's fancy features for efficient cross-frame palettes and temporal dithering. It produces animated GIFs that use thousands of colors per frame.

(CC) Blender Foundation | gooseberry.blender.org

It's a CLI tool, but it can also be compiled as a C library for seamless use in other apps.

Download and install

See releases page for executables.

If you have Rust 1.49+, you can also get it with cargo install gifski. Run cargo build --release --features=openmp or cargo build --release --features=video,openmp to build from source.

If you have Homebrew, you can also get it with brew install gifski.

Usage

gifski is a command-line tool. There is no GUI for Windows or Linux (there is one for macOS).

The recommended way is to first export video as PNG frames. If you have ffmpeg installed, you can run in terminal:

ffmpeg -i video.webm frame%04d.png

and then make the GIF from the frames:

gifski -o anim.gif frame*.png

You can also resize frames (with -W <width in pixels> option). If the input was ever encoded using a lossy video codec it's recommended to at least halve size of the frames to hide compression artefacts and counter chroma subsampling that was done by the video codec.

Adding --quality=90 may reduce file sizes a bit, but expect to lose a lot of quality for little gain. GIF just isn't that good at compressing, no matter how much you compromise.

See gifski -h for more options.

Building

  1. Install Rust via rustup or run rustup update. This project only supports up-to-date versions of Rust. You may get compile errors, warnings about "unstable edition", etc. if you don't run rustup update regularly.
  2. Clone the repository: git clone https://github.com/ImageOptim/gifski
  3. In the cloned directory, run: cargo build --release

Enable OpenMP by adding --features=openmp to Cargo build flags (supported on macOS and Linux with GCC). It makes encoding more than twice as fast.

Using from C

See gifski.h for the API. To build the library, run:

cargo build --release

and link with target/release/libgifski.a. Please observe the LICENSE.

License

AGPL 3 or later. Let me know if you'd like to use it in a product incompatible with this license. I can offer alternative licensing options, including commercial licenses.

With built-in video support

The tool optionally supports decoding video directly, but unfortunately it relies on ffmpeg 4.x, which may be very hard to get working, so it's not enabled by default.

You must have ffmpeg and libclang installed, both with their C headers intalled in default system include paths. Details depend on the platform and version, but you usually need to install packages such as libavformat-dev, libavfilter-dev, libavdevice-dev, libclang-dev, clang. Please note that installation of these dependencies may be quite difficult. Especially on macOS and Windows it takes expert knowledge to just get them installed without wasting several hours on endless stupid installation and compilation errors, which I can't help with.

Once you have dependencies installed, compile with cargo build --release --features=video,openmp or cargo build --release --features=video-static.

When compiled with video support ffmpeg licenses apply. You may need to have a patent license to use H.264/H.265 video (I recommend using VP9/WebM instead).

gifski -o out.gif video.mp4

Cross-compilation for iOS

Make sure you have Rust installed via rustup. Run once:

rustup target add aarch64-apple-ios

and then to build the library:

cargo build --lib --release --target=aarch64-apple-ios

The build will print "dropping unsupported crate type cdylib". This is normal and expected.

This will create a static library in ./target/aarch64-apple-ios/release/libgifski.a. You can add this library to your Xcode project. See gifski.app for an example how to use libgifski from Swift.

You can also use cargo lipo command to integrate with Xcode project to have it built automatically.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].