./graphics/gifski, GIF encoder based on libimagequant (pngquant)

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 1.14.4, Package name: gifski-1.14.4, Maintainer: pkgsrc-users

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.

It's a CLI tool, but it can also be compiled as a C library for seamless use in
other apps.
gifski is a command-line tool. There is no GUI for Windows or Linux (there is
one for macOS).


Master sites:

Filesize: 81.579 KB

Version history: (Expand)


CVS history: (Expand)


   2024-02-10 22:47:13 by pin | Files touched by this commit (3) | Package updated
Log message:
graphics/gifski: update to 1.14.4

 - Fixed trimming for real this time.
   2024-02-09 14:54:51 by pin | Files touched by this commit (3) | Package updated
Log message:
graphics/gifski: update to 1.14.2

 - Plus a small improvement in handling of transparency.
   2024-01-27 22:57:22 by pin | Files touched by this commit (1)
Log message:
graphics/gifski: restore correct license
   2024-01-27 22:34:18 by pin | Files touched by this commit (4) | Package updated
Log message:
graphics/gifski: update to 1.14.1

 - Refactored internals of the GIF codec
 - Faster PNG decoder
 - Small code cleanups
   2024-01-22 14:17:08 by Ryo ONODERA | Files touched by this commit (119)
Log message:
*: Recursive revbump from multimedia/libvpx
   2023-11-12 14:24:43 by Thomas Klausner | Files touched by this commit (2570)
Log message:
*: revebump for new brotli option for freetype2

Addresses PR 57693
   2023-10-26 10:01:20 by pin | Files touched by this commit (3) | Package updated
Log message:
graphics/gifski: update to 1.13.0

The last bit of C has fallen

gif.ski was originally meant to be just the highest-quality GIF maker, but over
time I also made it generate smaller files. Now it's probably the most
technically advanced GIF compressor, if I say so myself.

The key to good GIF compression is making LZW algorithm lossy. In 2014, I wrote
a patch that added lossy compression to gifsicle. Gifsicle is a GIF optimization
tool created in 1998, so I can't blame them for not using Rust. Of course,
I wanted to use that lossy compression in gif.ski too, so I've made gifsicle
usable as a Rust crate.

Rust already had a gif encoder, so bringing all of the gifsicle's code seemed
unnecessary. I only wanted the lossy LZW bit, so I've made the Rust gif library
accept data from other compressors, and used only a couple of gifsicle's C
functions for compression.

The lossy LZW compressor was still my 2014 hacked-together C — until yesterday.
I've rewritten it in Rust.

The rewritten code gives exactly the same, bit-identical output. Usually, when
people rewrite projects it's hard to compare results to the original, because
the rewrites change and reinvent things along the way. This time it's apples to
apples. I made sure it works exactly the same. I even reimplemented an integer
overflow bug and quirks caused by use linked lists. The result is… the same
performance, and the same binary size, within margin of error. You don't need
to rush to upgrade! On one hand this isn't surprising — it's the same algorithm,
and Rust has C-like performance as advertised. OTOH I used mostly idiomatic
Rust, and did not try to make it super optimized. The original C code did clever
things with memory pools and linked lists, and I've swapped it all for Vecs in
enums.

Aside from ffmpeg, which I'm not rewriting, gif.ski is now 100% pure Rust. It
makes it a bit easier to build it. The x86-64 MUSL/Linux binary has been built
on my ARM Mac. Since the code is now in a form I find easier to refactor, later
I'll work on improving quality of its lossy dithering, because for some reason
I'm determined to squeeze every last possible bit out of this prehistoric video
format.
   2023-09-25 11:42:34 by pin | Files touched by this commit (4) | Package updated
Log message:
graphics/gifski: update to 1.12.2

 - matte option for anti-aliasing transparency edges for a specific background
   color.
 - API has ability to add custom fixed colors to the palette.
 - Slightly faster resizing and PNG decoding.