slicklabs / image
所有与Slick图像相关的功能
Requires
- php: ^7.1.3
- ext-exif: *
- intervention/image: ^2.4
- spatie/image-optimizer: ^1.1
- symfony/console: ^4.2
- symfony/filesystem: ^4.2
- symfony/finder: ^4.2
- tightenco/collect: ^5.7
This package is auto-updated.
Last update: 2024-09-22 01:26:54 UTC
README
此包受到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)。