All Projects → toy → Image_optim

toy / Image_optim

Licence: mit
Optimize images using multiple utilities

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Image optim

Compress Images
Minify size your images. Image compression with extension: jpg/jpeg, svg, png, gif. NodeJs
Stars: ✭ 331 (-76.19%)
Mutual labels:  image-optimization
Kraken Magento
Official Kraken.io Magento Extension
Stars: ✭ 21 (-98.49%)
Mutual labels:  image-optimization
Image optim pack
Precompiled binaries for image_optim
Stars: ✭ 69 (-95.04%)
Mutual labels:  image-optimization
Pngquant
Lossy PNG compressor — pngquant command based on libimagequant library
Stars: ✭ 4,086 (+193.96%)
Mutual labels:  image-optimization
Imgp
📸 High-performance cli batch image resizer and rotator
Stars: ✭ 744 (-46.47%)
Mutual labels:  image-optimization
Imagemin Module
Automatically optimize (compress) all images used in Nuxt.js
Stars: ✭ 37 (-97.34%)
Mutual labels:  image-optimization
Rawpy
📷 RAW image processing for Python, a wrapper for libraw
Stars: ✭ 256 (-81.58%)
Mutual labels:  image-optimization
Tinify Python
Python client for the Tinify API.
Stars: ✭ 95 (-93.17%)
Mutual labels:  image-optimization
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 (-43.53%)
Mutual labels:  image-optimization
Image Resizer
On-the-fly image resizing using Node.js and libvips. Heroku Ready!
Stars: ✭ 59 (-95.76%)
Mutual labels:  image-optimization
Imagealpha
Mac GUI for pngquant, pngnq and posterizer
Stars: ✭ 452 (-67.48%)
Mutual labels:  image-optimization
Imgbot
An Azure Function solution to crawl through all of your image files in GitHub and losslessly compress them. This will make the file size go down, but leave the dimensions and quality untouched. Once it's done, ImgBot will open a pull request for you to review and merge. [email protected]
Stars: ✭ 732 (-47.34%)
Mutual labels:  image-optimization
Image Optimizer
Simple lossless compression for Elementary OS
Stars: ✭ 52 (-96.26%)
Mutual labels:  image-optimization
Libimagequant
Palette quantization library that powers pngquant and other PNG optimizers
Stars: ✭ 344 (-75.25%)
Mutual labels:  image-optimization
Gp Vue Boilerplate
Grabarz & Partner Boilerplate is a professional front-end template for building fast, robust, and adaptable web apps or sites with vuejs.
Stars: ✭ 71 (-94.89%)
Mutual labels:  image-optimization
Imager
Automated image compression for efficiently distributing images on the web.
Stars: ✭ 266 (-80.86%)
Mutual labels:  image-optimization
Kraken Ruby
Official Ruby Gem for Kraken API
Stars: ✭ 34 (-97.55%)
Mutual labels:  image-optimization
Emage
🧙‍♂️ From developers to developers: a cross-platform tool for losslessly image compression.
Stars: ✭ 99 (-92.88%)
Mutual labels:  image-optimization
Kraken Node
Official Kraken.io module for Node.js
Stars: ✭ 76 (-94.53%)
Mutual labels:  image-optimization
Enfasten
⚡️ Automatically make your site faster with optimized responsive images
Stars: ✭ 56 (-95.97%)
Mutual labels:  image-optimization

Gem Version Build Status AppVeyor Status Code Climate Code Climate Coverage Depfu Inch CI

image_optim

Command line tool and ruby interface to optimize (lossless compress, optionally lossy) jpeg, png, gif and svg images using external utilities:

Based on ImageOptim.app.

Documentation for latest gem version and master branch.

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

Gem installation

gem install image_optim

You may also want to install image_optim_pack (see Binaries pack).

gem install image_optim_pack

Bundler

Add to your Gemfile:

gem 'image_optim'

With image_optim_pack:

gem 'image_optim'
gem 'image_optim_pack'

With version:

gem 'image_optim', '~> 0.28'

If you want to check latest changes:

gem 'image_optim', :git => 'git://github.com/toy/image_optim.git'

Binaries location

Simplest way for image_optim to locate binaries is to install them in common location present in PATH (see Binaries installation).

If you cannot install to common location, then install to custom one and add it to PATH.

Specify custom bin location using XXX_BIN environment variable (JPEGOPTIM_BIN, OPTIPNG_BIN, …).

Besides permanently setting environment variables in ~/.profile, ~/.bash_profile, ~/.bashrc, ~/.zshrc, … they can be set:

  • before command:

    PATH="/custom/location:$PATH" image_optim *.jpg

    for example:

    PATH="/Applications/ImageOptim.app/Contents/MacOS:$PATH" image_optim *.jpg

  • inside script:

    ENV['PATH'] = "/custom/location:#{ENV['PATH']}"; ImageOptim.optimize_images([…])

    for example:

    ENV['PATH'] = "/Applications/ImageOptim.app/Contents/MacOS:#{ENV['PATH']}"; ImageOptim.optimize_images([…])

Binaries installation

Binaries pack

Easiest way to get latest versions of most binaries for image_optim for Linux, Mac OS X, FreeBSD and OpenBSD is by installing image_optim_pack gem.

Check installation instructions in Gem installation section.

Pack doesn't include pngout and svgo binaries, their installation instructions are provided below.

Linux - Debian/Ubuntu

sudo apt-get install -y advancecomp gifsicle jhead jpegoptim libjpeg-progs optipng pngcrush pngquant

If you get an old version of pngquant, please check how to install up-to-date version or compile from source at http://pngquant.org/.

Linux - RHEL/Fedora/Centos

sudo yum install -y advancecomp gifsicle jhead libjpeg optipng pngquant

You may also need to install libjpeg-turbo-utils instead of libjpeg:

sudo yum install -y libjpeg-turbo-utils

You will also need to install jpegoptim and pngcrush from source:

jpegoptim

Replace X.Y.Z with latest version number from http://www.kokkonen.net/tjko/projects.html#jpegoptim.

JPEGOPTIM_VERSION=X.Y.Z
cd /tmp
curl -O http://www.kokkonen.net/tjko/src/jpegoptim-$JPEGOPTIM_VERSION.tar.gz
tar zxf jpegoptim-$JPEGOPTIM_VERSION.tar.gz
cd jpegoptim-$JPEGOPTIM_VERSION
./configure && make && make install

pngcrush

Replace X.Y.Z with latest version number from http://sourceforge.net/projects/pmt/files/pngcrush/.

PNGCRUSH_VERSION=X.Y.Z
cd /tmp
curl -O http://iweb.dl.sourceforge.net/project/pmt/pngcrush/$PNGCRUSH_VERSION/pngcrush-$PNGCRUSH_VERSION.tar.gz
tar zxf pngcrush-$PNGCRUSH_VERSION.tar.gz
cd pngcrush-$PNGCRUSH_VERSION
make && cp -f pngcrush /usr/local/bin

OS X: Macports

sudo port install advancecomp gifsicle jhead jpegoptim jpeg optipng pngcrush pngquant

OS X: Brew

brew install advancecomp gifsicle jhead jpegoptim jpeg optipng pngcrush pngquant jonof/kenutils/pngout

pngout installation (optional)

If you installed the dependencies via brew, pngout should be installed already. Otherwise, you can install pngout by downloading and installing the binary versions.

Note: pngout is free to use even in commercial soft, but you can not redistribute, repackage or reuse it without consent and agreement of creator. license

svgo installation (optional)

svgo is available from NPM.

npm install -g svgo

If you prefer to install svgo to your project directory, use one of the following commands instead:

npm install svgo

yarn add svgo

When installing svgo to the project directory, you must add the following to your environment:

SVGO_BIN='node_modules/svgo/bin/svgo'

jpeg-recompress installation (optional)

Download and install the jpeg-recompress binary from the JPEG-Archive Releases page, or follow the instructions to build from source.

Usage

From shell

image_optim *.{jpg,png,gif,svg}

image_optim -r .

image_optim -h

From ruby

Initialize optimizer (or you can call optimization methods directly on ImageOptim):

image_optim = ImageOptim.new

image_optim = ImageOptim.new(:pngout => false)

image_optim = ImageOptim.new(:nice => 20)

Optimize image getting temp path:

image_optim.optimize_image('a.png')

Optimize image in place:

image_optim.optimize_image!('b.jpg')

Optimize image data:

image_optim.optimize_image_data(data)

Multiple images:

image_optim.optimize_images(Dir['*.png']) do |unoptimized, optimized|
  if optimized
    puts "#{unoptimized} => #{optimized}"
  end
end

image_optim.optimize_images!(Dir['*.*'])

image_optim.optimize_images_data(datas)

From rails

Rails image assets optimization is extracted into image_optim_rails gem.

Configuration

Configuration in YAML format will be read and prepended to options from two paths:

  • $XDG_CONFIG_HOME/image_optim.yml (by default ~/.config/image_optim.yml)
  • .image_optim.yml in current working directory

Paths can be changed using :config_paths option and --config-paths argument.

Example configuration:

nice: 20
pngout: false # disable
optipng:
  level: 5

Temporary directory

image_optim uses standard ruby library for creating temporary files. Temporary directory can be changed using one of TMPDIR, TMP or TEMP environment variables.

Options

  • :nice — Nice level, priority of all used tools with higher value meaning lower priority, in range -20..19, negative values can be set only if run by root user (defaults to 10)
  • :threads — Number of threads or disable (defaults to number of processors)
  • :verbose — Verbose output (defaults to false)
  • :pack — Require image_optim_pack or disable it, by default image_optim_pack will be used if available, will turn on :skip-missing-workers unless explicitly disabled (defaults to nil)
  • :skip_missing_workers — Skip workers with missing or problematic binaries (defaults to false)
  • :allow_lossy — Allow lossy workers and optimizations (defaults to false)
  • :cache_dir — Configure cache directory
  • :cache_worker_digests - Also cache worker digests along with original file digest and worker options: updating workers invalidates cache

Worker can be disabled by passing false instead of options hash or by setting option :disable to true.

advpng:

  • :level — Compression level: 0 - don't compress, 1 - fast, 2 - normal, 3 - extra, 4 - extreme (defaults to 4)

gifsicle:

  • :interlace — Interlace: true - interlace on, false - interlace off, nil - as is in original image (defaults to running two instances, one with interlace off and one with on)
  • :level — Compression level: 1 - light and fast, 2 - normal, 3 - heavy (slower) (defaults to 3)
  • :careful — Avoid bugs with some software (defaults to false)

jhead:

Worker has no options

jpegoptim:

  • :allow_lossy — Allow limiting maximum quality (defaults to false)
  • :strip — List of markers to strip: :com, :exif, :iptc, :icc, :xmp, :none or :all (defaults to :all)
  • :max_quality — Maximum image quality factor 0..100, ignored in default/lossless mode (defaults to 100)

jpegrecompress:

  • :allow_lossy — Allow worker, it is always lossy (defaults to false)
  • :quality — JPEG quality preset: 0 - low, 1 - medium, 2 - high, 3 - veryhigh (defaults to 3)
  • :method — Comparison Metric: mpe - Mean pixel error, ssim - Structural similarity, ms-ssim - Multi-scale structural similarity (slow!), smallfry - Linear-weighted BBCQ-like (may be patented) (defaults to ssim)

jpegtran:

  • :copy_chunks — Copy all chunks (defaults to false)
  • :progressive — Create progressive JPEG file (defaults to true)
  • :jpegrescan — Use jpegtran through jpegrescan, ignore progressive option (defaults to true)

optipng:

  • :level — Optimization level preset: 0 is least, 7 is best (defaults to 6)
  • :interlace — Interlace: true - interlace on, false - interlace off, nil - as is in original image (defaults to false)
  • :strip — Remove all auxiliary chunks (defaults to true)

pngcrush:

  • :chunks — List of chunks to remove or :alla - all except tRNS/transparency or :allb - all except tRNS and gAMA/gamma (defaults to :alla)
  • :fix — Fix otherwise fatal conditions such as bad CRCs (defaults to false)
  • :brute — Brute force try all methods, very time-consuming and generally not worthwhile (defaults to false)
  • :blacken — Blacken fully transparent pixels (defaults to true)

pngout:

  • :copy_chunks — Copy optional chunks (defaults to false)
  • :strategy — Strategy: 0 - xtreme, 1 - intense, 2 - longest Match, 3 - huffman Only, 4 - uncompressed (defaults to 0)

pngquant:

  • :allow_lossy — Allow quality option (defaults to false)
  • :max_colors — Maximum number of colors to use (defaults to 256)
  • :quality — min..max - don't save below min, use less colors below max (both in range 0..100; in yaml - !ruby/range 0..100), ignored in default/lossless mode (defaults to 100..100, 0..100 in lossy mode)
  • :speed — speed/quality trade-off: 1 - slow, 3 - default, 11 - fast & rough (defaults to 3)

svgo:

  • :disable_plugins — List of plugins to disable (defaults to [])
  • :enable_plugins — List of plugins to enable (defaults to [])

Contributing

List of contributors to image_optim.

If you would like to contribute - that is great and you are very welcome. Please check few notes in file CONTRIBUTING.markdown.

ChangeLog

In separate file CHANGELOG.markdown.

Copyright

Copyright (c) 2012-2020 Ivan Kuchin. See LICENSE.txt for details.

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