
Research
Security News
Malicious PyPI Package Exploits Deezer API for Coordinated Music Piracy
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
imageoptim-cli
Advanced tools
Automates ImageOptim, ImageAlpha, and JPEGmini for Mac to make batch optimisation of images part of your automated build process.
Automates ImageOptim, ImageAlpha, and JPEGmini for Mac to make batch optimisation of images part of your automated build process.
While other image optimization tools are available from the command line, ImageOptim-CLI exists because the current benchmarks suggest that ImageOptim, ImageAlpha and JPEGmini currently outperform those alternatives over lossless and lossy optimizations.
Check out this short video demo of ImageOptim-CLI to see how it works.
Jamie Mason / @fold_left.
ImageOptim-CLI is written in Shell and AppleScript, you don't need Node.js to run it. npm is suggested because it makes installation very convenient.
npm install -g imageoptim-cli
You can install manually by downloading the latest zip then adding ImageOptim-CLI to your $PATH.
curl --output imageoptim-cli.zip https://codeload.github.com/JamieMason/ImageOptim-CLI/zip/1.14.8
unzip imageoptim-cli.zip
export PATH=$PATH:imageoptim-cli/bin
Saving somewhere in your home directory such as
~/imageoptim-cli
is recommended, but not essential. Saving to/Applications
is not recommended, do not do this.
You may be presented with the following message the first time you run ImageOptim-CLI with the --jpeg-mini
flag.
To automate JPEGmini we need to add Terminal.app (or iTerm.app etc) to the 'support for assistive devices' whitelist.
The JPEGmini OS X Apps don't include a command line API, so a real user is simulated by entering synthetic clicks and keyboard commands instead. This requires your permission and is easily set up in System Preferences as shown by these guides.
Usage: imageoptim [options]
Options:
-d, --directory directory of images to process
-a, --image-alpha pre-process PNGs with ImageAlpha.app *
-j, --jpeg-mini pre-process JPGs with JPEGmini.app **
-m, --min-quality pngquant min quality parameter
-s, --skip-if-larger pngquant use --skip-if-larger
-q, --quit quit all apps when complete
-c, --no-color disable color output
-h, --help display this usage information
-e, --examples display some example commands and uses
-v, --version display the version number
--verbose display detailed, per-file info on optimizations
* http://pngmini.com
** https://itunes.apple.com/us/app/jpegmini/id498944723
This command will optimise all image files in your Awesome project.
imageoptim --directory ~/Sites/Awesome # [options]
This command will optimise just the .jpg files in your Awesome project.
find ~/Sites/Awesome -name '*.jpg' | imageoptim # [options]
The long format for enabling options is as follows;
imageoptim --jpeg-mini --image-alpha --quit --no-color --directory path/to/images
The equivalent of the above in short format is as follows;
imageoptim -j -a -q -d -c path/to/images
Adding the below to your_project/.git/hooks/pre-commit will run imageoptim-CLI each time you commit new and changed files into your project. Any files which aren't images will be ignored.
images=$(git diff --exit-code --cached --name-only --diff-filter=ACM -- '*.png' '*.jpg')
$(exit $?) || (echo "$images" | imageoptim && git add $images)
The ImageOptim-CLI Grunt plugin is grunt-imageoptim.
ImageOptim-CLI features in this comparison of the performance of image optimisation tools alongside Kraken.io, CodeKit, grunt-contrib-imagemin, Smush.it, and TinyPNG.
How Optimized Are Your Images? Meet ImageOptim-CLI, a Batch Compression Tool
The ImageOptim-CLI Workflow for Alfred app is alfred-image-optim-workflow
You will need to install these applications separately.
The CLI, ImageOptim and ImageAlpha are all free. JPEGmini is a paid-for product but you can use ImageOptim-CLI and choose not to run JPEGmini.
imageoptim -a -j -q
instead of the more common imageoptim -ajq
?This was an early mistake which now needs supporting for backwards compatibility.
Issue 21 is open to add support for
the -ajq
format as well as the current format.
WebP looks great and may well overtake the formats handled by ImageOptim-CLI, but converting images to WebP is outside ImageOptim-CLI's chosen remit.
JPEGmini does this today, but for ImageOptim and ImageAlpha I feel a feature like this belongs in those applications rather than this automator.
Optimising images is a pretty intensive process, so instead of optimising one image at a time (which would take forever) — ImageOptim optimises many images at the same time until all of them are done.
A side effect of this is that the fans come on at full power to keep your machine cool while it's maxed out.
ImageOptim-CLI uses ImageAlpha's internal installation of pngquant so it's normal that nothing is shown on screen.
It's also possible that if you look in the Activity Monitor
you will not see pngquant
displayed but it is being run. In my experience it's only when you
run ImageOptim-CLI on a very large number of PNGs that you have enough time to spot it.
ImageOptim-CLI is intended to be a simple, convenient, powerful, general-purpose image optimisation tool. If your needs have outgrown ImageOptim-CLI it's better to run pngquant separately, passing whatever custom settings you need.
Not currently, the full version of JPEGmini already has some subtle differences and JPEGmini Lite causes further fragmentation. It is possible but not a priority, as the free version has a limit of processing 30 images per day anyway.
Performing the in-app upgrade leaves the app named as jpegmini-lite, so ImageOptim-CLI can't determine whether it's the free or full version. It is better to instead buy the full version of JPEGmini separately.
See this tutorial on how to manage Accessibility preferences and GUI Scripting. In the case of OS X Mavericks, you will want to add the Applications JPEGmini and Terminal (or equivalent such as iTerm).
ImageOptim-CLI is responsible for automating 3 OS X applications so is inherently bound to OS X for that reason.
It would first require ImageOptim, ImageAlpha, and JPEGmini to be available for those platforms.
@addyosmani wrote a really thorough article on tools for image optimization which discusses a wide range of options in great detail.
FAQs
Automates ImageOptim, ImageAlpha, and JPEGmini for Mac to make batch optimisation of images part of your automated build process.
The npm package imageoptim-cli receives a total of 5,542 weekly downloads. As such, imageoptim-cli popularity was classified as popular.
We found that imageoptim-cli 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.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.
Security News
Newly introduced telemetry in devenv 1.4 sparked a backlash over privacy concerns, leading to the removal of its AI-powered feature after strong community pushback.