Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
openstreetmap-image_optim
Advanced tools
Optimize (lossless compress, optionally lossy) images (jpeg, png, gif, svg) using external utilities:
Based on ImageOptim.app.
Documentation for latest version and master.
gem install image_optim
You may also want to install image_optim_pack
(see Binaries pack).
gem install image_optim_pack
Add to your Gemfile
:
gem 'image_optim'
With image_optim_pack
:
gem 'image_optim'
gem 'image_optim_pack'
With version:
gem 'image_optim', '~> 0.11'
If you want to check latest changes:
gem 'image_optim', :git => 'git://github.com/toy/image_optim.git'
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([…])
Easiest way to get latest versions of most binaries for image_optim
for Linux and Mac OS X 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.
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/.
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:
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
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
sudo port install advancecomp gifsicle jhead jpegoptim jpeg optipng pngcrush pngquant
brew install advancecomp gifsicle jhead jpegoptim jpeg optipng pngcrush pngquant
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
is available from NPM.
npm install -g svgo
Download and install the jpeg-recompress
binary from the JPEG-Archive Releases page,
or follow the instructions to build from source.
image_optim *.{jpg,png,gif,svg}
image_optim -r .
image_optim -h
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)
ImageOptim::Railtie
will automatically register sprockets preprocessor unless you set config.assets.image_optim = false
or config.assets.compress = false
(later for partial rails 3 compatibility).
You can provide options for image_optim used for preprocessor through config config.assets.image_optim = {nice: 20, svgo: false}
(ruby1.8 style: {:nice => 20, :svgo => false}
).
Check available options in options section.
Image optimization can be time consuming, so depending on your deployment process you may prefer to optimize original asset files.
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 directoryPaths can be changed using :config_paths
option and --config-paths
argument.
Example configuration:
nice: 20
pngout: false # disable
optipng:
level: 5
:nice
— Nice level (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
)Worker can be disabled by passing false
instead of options hash or by setting option :disable
to true
.
:level
— Compression level: 0
- don't compress, 1
- fast, 2
- normal, 3
- extra, 4
- extreme (defaults to 4
):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
)Worker has no options
:strip
— List of extra markers to strip: :comments
, :exif
, :iptc
, :icc
or :all
(defaults to :all
):max_quality
— Maximum image quality factor 0
..100
, ignored in default/lossless mode (defaults to 100
):quality
— JPEG quality preset: 0
- low, 1
- medium, 2
- high, 3
- veryhigh (defaults to 3
):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 false
):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
):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
):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
):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
):speed
— speed/quality trade-off: 1
- slow, 3
- default, 11
- fast & rough (defaults to 3
)disable_plugins
- List of plugins to disable (defaults to none)enable_plugins
- List of plugins to enable (defaults to none)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.
Financial contributions can be made via gratipay.
In separate file CHANGELOG.markdown.
Copyright (c) 2012-2015 Ivan Kuchin. See LICENSE.txt for details.
FAQs
Unknown package
We found that openstreetmap-image_optim demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.