Gifcurry

GIF creation utility. https://github.com/lettier/gifcurry

Latest on Hackage:2.2.0.0

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

BSD3 licensed and maintained by Lettier

Gifcurry

Gifcurry

Create animated GIFs, optionally overlaid with text, from video files.

Screenshots

GUI

Sample GIF

Caminandes 3: Llamigos (2016) - Blender Foundation
Credit: Caminandes 3: Llamigos (2016) - Blender Foundation

CLI Usage

gifcurry_cli \
  -i inputFile \
  -o outputFile \
  -s startTime \
  -d durationTime \
  -w widthSize \
  -q qualityPercent \
  -f fontChoice \
  -t topText \
  -b bottomText

CLI Example

~/gifcurry ❯❯❯ ./gifcurry_cli \
  -i ./03_caminandes_llamigos_1080p.mp4 \
  -o ./out.gif \
  -s 42 \
  -d 4 \
  -w 600 \
  -q 100 \
  -f 'Roboto Condensed Bold Italic' \
  -t 'Download' \
  -b 'Gifcurry'

 _____ _  __                           
|  __ (_)/ _|                          
| |  \/_| |_ ___ _   _ _ __ _ __ _   _ 
| | __| |  _/ __| | | | '__| '__| | | |
| |_\ \ | || (__| |_| | |  | |  | |_| |
 \____/_|_| \___|\__,_|_|  |_|   \__, |
                                  __/ |
                                 |___/ 

Gifcurry 2.2.0.0
(C) 2016 David Lettier
lettier.com

----------------------------------------

Input file: ./03_caminandes_llamigos_1080p.mp4
Output file: ./out.gif
Start second: 42.000
Duration: 4.000 seconds
GIF width: 600px
Quality: 100.0%
Font Choice: Roboto Condensed Bold Italic
Top text: Download
Bottom text: Gifcurry

Writing temporary frames to... ./frames13465
Font matched: Roboto-Condensed-Bold-Italic
Writing your GIF to... ./out.gif
Done.

Dependencies

Install & Run

Linux

Ubuntu/Mint

# Install FFmpeg (https://www.ffmpeg.org/download.html)
# Install ImageMagick (https://www.imagemagick.org/script/download.php)
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
sudo apt-get update
sudo apt-get install ffmpeg imagemagick
# Install Haskell (https://www.haskell.org/platform/)
# Install GNU Wget (https://www.gnu.org/software/wget/)
# Find the latest release at https://github.com/lettier/gifcurry/releases
# * equals the version number
wget https://github.com/lettier/gifcurry/releases/download/*/gifcurry-linux-*.tar.gz
tar -xvfz gifcurry-linux*.tar.gz
cd gifcurry-linux-*/bin
./gifcurry_gui
./gifcurry_cli -?

Arch/Manjaro

cd
# Install Git
sudo pacman -S git
# Install Gifcurry from AUR
mkdir -p build_gifcurry
cd build_gifcurry
git clone https://aur.archlinux.org/gifcurry.git
cd gifcurry
makepkg -sic
cd
rm -rf build_gifcurry
gifcurry_gui
gifcurry_cli -?

Mac

Binaries

# If you do not have Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install ffmpeg
brew install imagemagick
brew install ghostscript
brew install wget
brew install gnome-icon-theme
# Find the latest release at https://github.com/lettier/gifcurry/releases
# * equals the version number
wget https://github.com/lettier/gifcurry/releases/download/*/gifcurry-macosx-*.tar.gz
tar xvfz gifcurry-macosx-*.tar.gz
cd gifcurry-macosx-*/bin
./gifcurry_gui
./gifcurry_cli -?

Compile

# If you do not have Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
brew install xcode
brew install git
brew install ghc
sudo chown -R $(whoami):admin /usr/local/bin
brew link ghc
brew install cabal-install
brew install pkg-config
brew install glib
brew install gtk+3
brew install cairo
brew install pango
brew install ffmpeg
brew install imagemagick
brew install ghostscript
brew install gnome-icon-theme
mkdir gifcurry
cd gifcurry
cabal sandbox init
cabal update
cabal install alex happy -j
cabal install gifcurry -j
cd .cabal-sandbox/bin/
./gifcurry_gui
./gifcurry_cli -?

Hackage

Stack

# Install GNU Wget (https://www.gnu.org/software/wget/)
# Install FFmpeg (https://www.ffmpeg.org/download.html)
# Install ImageMagick (https://www.imagemagick.org/script/download.php)
# Install Haskell (https://www.haskell.org/platform/)
# Find the latest version number at https://hackage.haskell.org/package/Gifcurry
# * equals the version number
wget https://hackage.haskell.org/package/Gifcurry-*/Gifcurry-*.tar.gz
tar -xvzf Gifcurry-*.tar.gz
cd Gifcurry-*
stack setup
stack install
stack exec -- gifcurry_gui
stack exec -- gifcurry_cli -?

Cabal

# Install FFmpeg (https://www.ffmpeg.org/download.html)
# Install ImageMagick (https://www.imagemagick.org/script/download.php)
# Install Haskell (https://www.haskell.org/platform/)
cabal update
cabal install alex happy -j
cabal install gifcurry -j
cd ~/.cabal/bin
./gifcurry_gui
./gifcurry_cli -?

Github

# Install GNU Make (https://www.gnu.org/software/make/)
# Install FFmpeg (https://www.ffmpeg.org/download.html)
# Install ImageMagick (https://www.imagemagick.org/script/download.php)
# Install Haskell (https://www.haskell.org/platform/)
git clone git@github.com:lettier/gifcurry.git
cd gifcurry/
make
make run_gui
make run_cli CLI_ARGS='-?'

License

For license information, see LICENSE.

(C) 2016 David Lettier
lettier.com

Changes

Gifcurry

Changelog

Version

2.2.0.0

Downstreams

Added

  • Loading a video now populates the start and duration fields
    • Duration is the length of the entire video in seconds
  • Confirmation dialog if duration is >= 10 seconds
  • getVideoDurationInSeconds to the library public API
  • Error checking
  • File path compatibility
  • About dialog
  • GNU Make targets for Arch Linux
  • stack.yaml
  • CHANGELOG.md

Changed

  • Icon file
  • Switched from gtk2hs to haskell-gi
  • Switched from Cabal to Haskell stack
  • Code clean up
  • README install and run instructions
  • README graphics
  • GUI widget IDs
  • Fixed the ImageMagick null font issue
    • ImageMagick assumes ~/.magick/type.xml exists
    • Instead of default, it searches for the first match to sans if no font is specified
  • Temporary file directory names where frames and GIFs are built

Removed

  • Old icon from cabal file
  • Altered icon from GUI file

Version

2.1.1.0

Downstreams

Added

-

Changed

  • Fixed cabal file
  • Altered optimization
  • Updated to work with GHC 8.0.2
  • Updated README to work with Hackage

Removed

-


Version

2.1.0.0

Downstreams

Added

  • Font selection capabilities
  • Font selection to the GUI
  • A fontChoice parameter to the CLI
  • A makefile

Changed

  • Updated the logo
  • Updated the icon
  • Fixed font scaling
  • Updated dependencies for macOS Sierra
  • Updated README
  • Reorganized project structure
  • Fixed compiler warnings

Removed

-


Version

2.0.0.2

Downstreams

Added

-

Changed

  • Fixed a bug where the first and last frame previews were not updating

Removed

-


Version

2.0.0.1

Downstreams

Added

  • postGUIAsync

Changed

  • Bumped dependencies up (mainly GHC 8.0)
  • [Char] to String

Removed

-


Version

2.0.0.0

Downstreams

Added

  • Type signatures
  • More error checking to the GUI

Changed

  • Refactored code
  • Made CLI more flexible concerning input options

Removed

-


Version

0.1.1.0

Downstreams

Added

  • First and last frame preview
  • Further file exists error checking

Changed

  • Disabled GUI re-sizing
  • Simplified GUI

Removed

-


Version

0.1.0.6

Downstreams

-

Added

-

Changed

  • Updated GIF open method to work for Mac OS X

Removed

-


Version

0.1.0.5

Downstreams

Added

-

Changed

  • Downgraded GTK requirement from 3.16 to 3.10

Removed

-


Version

0.1.0.4

Downstreams

Added

-

Changed

-

Removed

-


Version

0.1.0.3

Downstreams

Added

-

Changed

-

Removed

-


Version

0.1.0.2

Downstreams

Added

-

Changed

-

Removed

-


Version

0.1.0.1

Downstreams

Added

-

Changed

-

Removed

-


Version

0.1.0.0

Downstreams

Added

-

Changed

-

Removed

-


License

See LICENSE.

(C) 2017 David Lettier
lettier.com

comments powered byDisqus