maksclub/image-optimizer

图像优化/压缩库。这个库可以非常方便地优化 png、jpg 和 gif 文件。它使用 optipng、pngquant、pngcrush、pngout、gifsicle、jpegoptim 和 jpegtran 工具。

1.1.2 2017-07-24 18:40 UTC

This package is not auto-updated.

Last update: 2020-10-12 22:38:57 UTC


README

这个库是一个方便且易于使用的图像文件优化器。它使用 optipngpngquantjpegoptim 和其他几个库,因此在使用之前,您应该在服务器上安装适当的库。项目包含 Vagrantfile,它定义了带有所有库的测试虚拟机,因此您可以检查 Vagrantfile 来了解如何安装所有这些内容。

感谢 ImageOptimizer 和它使用的库,您的图像文件可以 减小 10%-70%

安装

使用 composer

composer require ps/image-optimizer

基本用法

$factory = new \ImageOptimizer\OptimizerFactory();
$optimizer = $factory->get();

$filepath = /* path to image */;

$optimizer->optimize($filepath);
//optimized file overwrites original one

配置

默认情况下,优化器不会抛出任何异常,如果文件无法优化或没有安装针对给定文件的优化库,优化器将不会修改原始文件。当您想要最终优化用户上传的文件时,这种行为是可接受的。当您的用例中优化错误应该导致异常时,为您的需要专门创建了 ignore_errors 选项。

这个库非常智能,您不需要配置 ImageOptimizer 所使用的所有库的二进制文件路径,库将在几个位置中查找这些二进制文件,因此如果二进制文件放在标准位置,它将自动找到。

支持选项

  • ignore_errors (默认: true)
  • execute_only_first_png_optimizer (默认: true) - 执行第一个成功或所有 png 优化器
  • execute_only_first_jpeg_optimizer (默认: true) - 执行第一个成功或所有 jpeg 优化器
  • optipng_options (默认: array('-i0', '-o2', '-quiet')) - 传递给库的参数数组
  • pngquant_options (默认: array('--force'))
  • pngcrush_options (默认: array('-reduce', '-q', '-ow'))
  • pngout_options (默认: array('-s3', '-q', '-y'))
  • advpng_options (默认: array('-z', '-4', '-q'))
  • gifsicle_options (默认: array('-b', '-O5'))
  • jpegoptim_options (默认: array('--strip-all', '--all-progressive'))
  • jpegtran_options (默认: array('-optimize', '-progressive'))
  • optipng_bin (默认: 将自动猜测) - 您可以强制指定二进制文件的路径,但默认情况下将自动猜测
  • pngquant_bin
  • pngcrush_bin
  • pngout_bin
  • advpng_bin
  • gifsicle_bin
  • jpegoptim_bin
  • jpegtran_bin

您可以将选项数组作为 ImageOptimizer\OptimizerFactory 构造函数的第一个参数传递。第二个参数是可选的 Psr\LoggerInterface

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

支持的优化器

  • 默认 (smart) - 它猜测文件类型并为该文件类型选择优化器
  • png - png 文件的优化器链,默认使用 pngquantoptipngpngquant 是有损优化
  • jpg - 执行两种优化中的第一种:jpegtranjpegoptim
  • gif - gifsicle 的别名
  • pngquant - 主页
  • optipng - 主页
  • pngcrush - 主页
  • pngout - 主页
  • advpng - 主页
  • jpegtran - 主页
  • jpegoptim - 主页
  • gifsicle - 主页

您可以通过传递其名称到 ImageOptimizer\OptimizerFactory::get 方法来获得具体的优化器

//default optimizer is `smart`
$optimizer = $factory->get();

//png optimizer
$pngOptimizer = $factory->get('png');

//jpegoptim optimizer etc.
$jpgOptimizer = $factory->get('jpegoptim');

许可

MIT