slicklabs/image

所有与Slick图像相关的功能

dev-master 2019-02-21 13:32 UTC

This package is auto-updated.

Last update: 2024-09-22 01:26:54 UTC


README

Latest Version on Packagist Quality Score

此包受到Spatie的Image Optimizer的极大启发,但是一种更常见的图像优化方法。

此包可以通过一系列工具运行来优化和调整PNG、JPG、SVG和GIF。以下是您如何使用它的方法

use Slick\Image\Optimizer;

$slickImageOptimizer = new Optimizer();

$slickImageOptimizer->optimize($pathToImage);

位于 $pathToImage 的图像将被覆盖为一个经过优化和调整的版本,应该更小。包将自动检测您的系统上安装了哪些优化二进制文件并使用它们。

安装

您可以通过composer安装此包

composer require slicklabs/image

优化工具

如果您的系统上存在这些优化器,包将使用它们

以下是如何在Ubuntu上安装所有优化器的方法

sudo apt-get install jpegoptim
sudo apt-get install optipng
sudo apt-get install pngquant
sudo npm install -g svgo
sudo apt-get install gifsicle

以下是如何在MacOS上安装二进制文件的方法(使用Homebrew

brew install jpegoptim
brew install optipng
brew install pngquant
brew install svgo
brew install gifsicle

哪些工具会做什么?

包将自动决定在特定图像上使用哪些工具。

JPGs

JPGs将通过JpegOptim变得较小。这些选项被使用

  • -m85:这将以85%的质量存储图像。此设置似乎符合Google的Pagespeed压缩规则
  • --strip-all:这将移除所有文本信息,如注释和EXIF数据
  • --all-progressive:这将确保结果图像是渐进式图像,这意味着可以通过多个逐步提高细节的传递来下载。

PNGs

PNGs将通过两个工具变小。第一个是Pngquant 2,一个有损PNG压缩器。我们未设置任何额外选项,使用它们的默认选项。然后我们将图像通过第二个工具:Optipng。这些选项被使用

  • -i0:这将生成一个非交错、渐进扫描的图像
  • -o2:这将优化级别设置为2(多个IDAT压缩尝试)

SVGs

SVGs将通过SVGO进行精简。将使用SVGO的默认配置,省略了cleanupIDs插件,因为该插件已知在单个页面上显示多个优化SVG时会引起问题。

请注意,SVGO可能会破坏您的SVG。您可以在Sara Soueidan的这篇出色的博客文章中找到更多相关信息

GIFs

GIFs将通过Gifsicle进行优化。这些选项将被使用

  • -O3:这将优化级别设置为Gifsicle的最大值,这会产生最慢但最好的结果

用法

这是使用此包的默认方式

use Slick\Image\Optimizer;

$slickImageOptimizer = new Optimizer();

$slickImageOptimizer->optimize($pathToImage);

位于 $pathToImage 的图像将被覆盖为一个经过优化的版本,应该更小。

包将自动检测您的系统上安装了哪些优化二进制文件并使用它们。

批量使用

您可以选择批量实现,它接受源文件夹和目标文件夹,并将创建一个新的文件夹,其中包含优化后的图像。

use Slick\Image\BulkOptimizer;

$slickBulkImageOptimizer = new BulkOptimizer([
    'width' => 1600,
    'height' => 1600,
    'source' => $pathToSourceFolder
    'dest' => $pathToDestionationFolder
]);

$slickBulkImageOptimizer->optimize();

如果目标文件夹不存在,它将自动创建一个。

命令行使用

此软件包还提供命令行方法。如果您想使用此功能,您必须将其作为独立的软件包安装。之后,基本用法是

php bin/console slick-image:optimize-image --source='/Users/USER/source' --dest='/Users/USER/dest'

这将使用批量优化器。它还会输出优化的进度。

记录优化过程

默认情况下,软件包不会抛出任何错误,只是静默运行。要验证软件包正在做什么,您可以设置一个记录器

use Slick\Image\BulkOptimizer;

$slickBulkImageOptimizer = new BulkOptimizer([
    'source' => $pathToSourceFolder
    'dest' => $pathToDestionationFolder
]);

$slickBulkImageOptimizer->setLogger(new MyLogger());

$slickBulkImageOptimizer->optimize();

记录器是一个实现了Psr\Log\LoggerInterface的类。一个完全符合规范的好日志库是Monolog。软件包将写入记录,记录使用了哪些Optimizers,执行了哪些命令以及它们的输出。

变更日志

目前尚未显示变更日志

安全

如果您发现任何与安全相关的问题,请通过电子邮件nathan@wefabric.nl联系我们,而不是使用问题跟踪器。

致谢

此软件包受到了Intervention Image的启发

许可证

MIT许可证(MIT)。