Gifcurry

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

Latest on Hackage:2.3.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 [OPTIONS]

Common flags:
  -i --inputfile=FILE      The input video file path and name.
  -o --outputfile=ITEM     The output GIF file path and name.
  -s --starttime=NUM       The start time (in seconds) for the first frame.
  -d --durationtime=NUM    How long the GIF lasts (in seconds) from the start
                           time.
  -w --widthsize=INT       How wide the GIF needs to be. Height will scale to
                           match.
  -q --qualitypercent=NUM  Ranges from 0.0 to 100.0.
  -f --fontchoice=ITEM     Choose your desired font for the top and bottom
                           text.
  -t --toptext=ITEM        The text you wish to add to the top of the GIF.
  -b --bottomtext=ITEM     The text you wish to add to the bottom of the GIF.
  -? --help                Display help message
  -V --version             Print version information
     --numeric-version     Print just the version number

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.3.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

Run

Build

Install & Run

Linux

AppImage (GUI Only)

# Install FFmpeg (https://www.ffmpeg.org/download.html)
# Install ImageMagick (https://www.imagemagick.org/script/download.php)
# Install GNU Wget (https://www.gnu.org/software/wget/) or download the AppImage with your browser
# Find the latest release at https://github.com/lettier/gifcurry/releases
# * equals the version number
# Download gifcurry-*-x86_64.AppImage
# Right click on the AppImage and allow the file to be executed as a program
wget https://github.com/lettier/gifcurry/releases/download/*/gifcurry-*-x86_64.AppImage
chmod a+x gifcurry-*-x86_64.AppImage
./gifcurry-*-x86_64.AppImage
# If you would like to install the AppImage, you can run the following
cd
wget "https://raw.githubusercontent.com/lettier/gifcurry/master/packaging/linux/gifcurry-gui-install.sh" -O "gifcurry-gui-install.sh"
chmod +x "gifcurry-gui-install.sh"
./gifcurry-gui-install.sh

Ubuntu/Mint

# Install FFmpeg (https://www.ffmpeg.org/download.html)
# Install ImageMagick (https://www.imagemagick.org/script/download.php)
sudo add-apt-repository ppa:jonathonf/ffmpeg-3
sudo apt-get update
sudo apt-get install ffmpeg imagemagick
# 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_cli -?
./gifcurry_gui

Arch/Manjaro/Antergos

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_cli -?
gifcurry_gui

Mac

Binaries

# Install Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
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_cli -?
./gifcurry_gui

Compile

# Install Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
brew install xcode
brew install git
git clone git@github.com:lettier/gifcurry.git
cd gifcurry/
brew cask install haskell-platform
brew install pkg-config gobject-introspection cairo gdk-pixbuf gsettings-desktop-schemas \
  gtk+3 gtk-mac-integration ffmpeg imagemagick ghostscript gnome-icon-theme
stack setup
stack install hsc2hs
stack install
export PATH=$PATH:"$HOME/.local/bin/"
gifcurry_cli -?
gifcurry_gui

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_cli -?
stack exec -- gifcurry_gui

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_cli -?
./gifcurry_gui

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_cli CLI_ARGS='-?'
make run_gui

License

For license information, see LICENSE.

(C) 2016 David Lettier
lettier.com

Changes

Gifcurry

Changelog

2.3.0.0

Added

  • Support for GTK 3.10
  • Logo to about dialog
  • findOrCreateTemporaryDirectory to Gifcurry library API

Changed

  • Switched icon from ICO to PNG
  • Use XdgCache location for cross compatible way of storing temporary files

Removed

  • ICO files


2.2.0.0

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

2.1.1.0

Added

-

Changed

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

Removed

-


2.1.0.0

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

-


2.0.0.2

Added

-

Changed

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

Removed

-


2.0.0.1

Added

  • postGUIAsync

Changed

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

Removed

-


2.0.0.0

Added

  • Type signatures
  • More error checking to the GUI

Changed

  • Refactored code
  • Made CLI more flexible concerning input options

Removed

-


0.1.1.0

Added

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

Changed

  • Disabled GUI re-sizing
  • Simplified GUI

Removed

-


0.1.0.6

Added

-

Changed

  • Updated GIF open method to work for Mac OS X

Removed

-


0.1.0.5

Added

-

Changed

  • Downgraded GTK requirement from 3.16 to 3.10

Removed

-


0.1.0.4

Added

-

Changed

-

Removed

-


0.1.0.3

Added

-

Changed

-

Removed

-


0.1.0.2

Added

-

Changed

-

Removed

-


0.1.0.1

Added

-

Changed

-

Removed

-


0.1.0.0

Added

-

Changed

-

Removed

-

comments powered byDisqus