Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

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.

License

NotificationsYou must be signed in to change notification settings

psliwa/image-optimizer

Repository files navigation

This library is handy and very easy to use optimizer for image files. It usesoptipng,pngquant,jpegoptim,svgo and few more libraries,so before use it you should install proper libraries on your server. Project contains Vagrantfile that defines testingvirtual machine with all libraries installed, so you can check Vagrantfile how to install all those stuff.

Thanks to ImageOptimizer and libraries that it uses, your image files can be10%-70% smaller.

Installation

Using composer:

composer require ps/image-optimizer

Basic usage

$factory =new \ImageOptimizer\OptimizerFactory();$optimizer =$factory->get();$filepath =/* path to image */;$optimizer->optimize($filepath);//optimized file overwrites original one

Configuration

By default optimizer does not throw any exception, if file can not be optimized or optimizing library for given file isnot installed, optimizer will not touch original file. This behaviour is ok when you want to eventually optimize filesuploaded by user. When in your use case optimization fault should cause exception,ignore_errors option was createdespecially for you.

This library is very smart, you do not have to configure paths to all binaries of libraries that are used by ImageOptimizer,library will be looking for those binaries in few places, so if binaries are placed in standard places, it will be foundautomatically.

Supported options:

  • ignore_errors (default: true)
  • single_optimizer_timeout_in_seconds (default: 60) - useful when youwant to have control how long optimizing lasts. For example in somecases optimizing may not be worth when it takes big amount of time.Passnull in order to turn off timeout.
  • output_filepath_pattern (default:%basename%/%filename%%ext%) -destination where optimized file will be stored. By default itoverrides original file. There are 3 placehoders:%basename%,%filename% (without extension and dot) and%ext% (extension withdot) which will be replaced by values from original file.
  • execute_only_first_png_optimizer (default: true) - execute the firstsuccessful or allpng optimizers
  • execute_only_first_jpeg_optimizer (default: true) - execute the first successful or alljpeg optimizers
  • optipng_options (default:array('-i0', '-o2', '-quiet')) - an array of arguments to pass to the library
  • pngquant_options (default:array('--force'))
  • pngcrush_options (default:array('-reduce', '-q', '-ow'))
  • pngout_options (default:array('-s3', '-q', '-y'))
  • advpng_options (default:array('-z', '-4', '-q'))
  • gifsicle_options (default:array('-b', '-O5'))
  • jpegoptim_options (default:array('--strip-all', '--all-progressive'))
  • jpegtran_options (default:array('-optimize', '-progressive'))
  • svgo_options (default:array('--disable=cleanupIDs'))
  • custom_optimizers (defaultarray())
  • optipng_bin (default: will be guessed) - you can enforce paths to binaries, but by default it will be guessed
  • pngquant_bin
  • pngcrush_bin
  • pngout_bin
  • advpng_bin
  • gifsicle_bin
  • jpegoptim_bin
  • jpegtran_bin
  • svgo_bin

You can pass array of options as first argument ofImageOptimizer\OptimizerFactory constructor. Second argument isoptionallyPsr\LoggerInterface.

$factory =new \ImageOptimizer\OptimizerFactory(array('ignore_errors' =>false),$logger);

Supported optimizers

  • default (smart) - it guess file type and choose optimizer for this file type
  • png - chain of optimizers for png files, by default it usespngquant andoptipng.pngquant is lossy optimization
  • jpg - first of two optimizations will be executed:jpegtran orjpegoptim
  • gif - alias togifsicle
  • pngquant -homepage
  • optipng -homepage
  • pngcrush -homepage
  • pngout -homepage
  • advpng -homepage
  • jpegtran -homepage
  • jpegoptim -homepage
  • gifsicle -homepage
  • svgo -homepage

You can obtain concrete optimizer by passing his name toImageOptimizer\OptimizerFactory::get method:

//default optimizer is `smart`$optimizer =$factory->get();//png optimizer$pngOptimizer =$factory->get('png');//jpegoptim optimizer etc.$jpgOptimizer =$factory->get('jpegoptim');

Custom optimizers

You can easily define custom optimizers:

$factory =new \ImageOptimizer\OptimizerFactory(array('custom_optimizers' =>array('some_optimizier' =>array('command' =>'some_command','args' =>array('-some-flag')    ))),$logger);

And then usage:

$customOptimizer =$factory->get('some_optimizier');

I got "All optimizers failed to optimize the file"

Probably you don't have required optimazers installed. Let's have a lookatVagrantfile file in order to see an example how to install thosecommands.

In order to see all intermediate errors, you can use logger (be defaultNullLogger is used, so logs are not available):

class StdoutLoggerextends \Psr\Log\AbstractLogger {publicfunctionlog($level,$message,array$context =array()) {echo$message."\n";     }}$factory =new \ImageOptimizer\OptimizerFactory(array(),newStdoutLogger());$factory->get()->optimize('yourfile.jpg');// and have a look at stdout

License

MIT

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp