image_optim_pack icon indicating copy to clipboard operation
image_optim_pack copied to clipboard

Precompiled binaries for image_optim

Gem Version Build Status Rubocop Docker build Livecheck Code Climate Depfu Inch CI

image_optim_pack

Precompiled binaries for image_optim.

Contains binaries for Mac OS X (>= 10.9, x86_64) and Linux (i686 and x86_64).

A test application with latest image_optim and image_optim_pack is available on render: https://iopack.onrender.com/.

Binaries and libraries

  • advpng by Andrea Mazzoleni and Filipe Estima (GNU GPLv3)
    • contains parts of 7z by Igor Pavlov with modifications by Andrea Mazzoleni (license)
    • and zopfli by Lode Vandevenne and Jyrki Alakuijala (license, contributors)
  • gifsicle by Eddie Kohler (GNU GPLv2)
  • jhead by Matthias Wandel (public domain)
  • jpeg-recompress by Daniel G. Taylor (license)
  • jpegoptim by Timo Kokkonen (GNU GPLv2 or later)
  • libjpeg and jpegtran by the Independent JPEG Group (license)
  • libjpeg-turbo by libjpeg-turbo Project (license)
  • liblcms2 by Marti Maria (license)
  • libpng by Guy Eric Schalnat, Andreas Dilger, Glenn Randers-Pehrson and others (license)
  • mozjpeg by Mozilla Research (license)
    • base on libjpeg and libjpeg-turbo, see above
  • optipng by Cosmin Truta (license, authors)
    • contains code based in part on the work of Miyasaka Masaru for BMP support (license)
    • and David Koblas for GIF support (license)
  • oxipng by Joshua Holmer (license)
  • pngcrush by Glenn Randers-Pehrson, portions by Greg Roelofs (license)
    • contains cexcept interface by Adam M. Costello and Cosmin Truta (license)
  • pngout by Ken Silverman (license)
    • Linux and BSD ports by Jonathon Fowler (http://www.jonof.id.au/pngout)
    • Mac OS X port by Ken Silverman, with assistance by Jonathon Fowler
  • pngquant by Kornel Lesiński based on code by Greg Roelofs and Jef Poskanzer after an idea by Stefan Schneider (license)
  • zlib by Jean-Loup Gailly and Mark Adler (license)

NOTE: On FreeBSD and OpenBSD make is not the GNU Make, so gmake should be used instead.

You can download all source code using gnu make download target:

make download

Installation

gem install image_optim image_optim_pack

Or add to your Gemfile:

gem 'image_optim'
gem 'image_optim_pack'

Development

Mac OS X binaries and libraries are built on host, others using vagrant.

Boxes for vagrant are built using veewee, check boxes/Rakefile and boxes/definitions.

script/run # Build and test all for all oses and architectures
script/run NO_HALT=1 # Don't halt VMs after building
script/run NO_UP=1 # Don't start VMs before building (will fail if not already running)
script/run darwin 64 # Build only platforms matching darwin or 64

make # Build all tools and copy them to vendor/OS-ARCH for current OS and ARCH, then test
make all # same

script/livecheck # Check versions
make update-versions # Update versions in Makefile

make download # Download archives
make download-tidy-up # Remove old archives
make build # Build all without copying to output directory

make test # Test bins for current os/arch
make test -i # Continue if one of bins fail

make clean # Remove build and output directories for current os/arch
make clean-all # Remove build root and output root directories
make clobber # `clean-all` and remove download directory

Docker

This project includes a Dockerfile in the root, which builds a minimal image with most binaries included.

Running

docker run --rm ghcr.io/toy/image_optim --version # image_optim version
docker run --rm ghcr.io/toy/image_optim --info # image_optim info including bin versions
docker run --rm -v "$PWD":/here -w /here ghcr.io/toy/image_optim image-in-this-folder.jpg

Building

make docker-build # will be tagged with latest and current date in format %Y%m%d
make docker-push # will push tags created by docker-build

Copyright

Copyright (c) 2014-2022 Ivan Kuchin. See LICENSE.txt for details.