ekino / tiny-png-sonata-media-bundle
Ekino 的 Tiny Png 与 SonataMedia 的集成
v1.1.0
2021-08-13 12:50 UTC
Requires
- php: ^7.2 || ^8.0
- doctrine/orm: ^2.6
- sonata-project/admin-bundle: ^3.1
- sonata-project/media-bundle: ^3.0
- sonata-project/notification-bundle: ^3.1
- symfony/framework-bundle: ^4.4 || ^5.3
- symfony/translation: ^4.4 || ^5.3
- tinify/tinify: ^1.5
Requires (Dev)
- ekino/phpstan-banned-code: ^0.3 || ^0.4
- friendsofphp/php-cs-fixer: ^2.12
- phpstan/phpstan-phpunit: ^0.12
- phpunit/phpunit: ^8.5
- symfony/phpunit-bridge: ^5.0
Suggests
- liip/monitor-bundle: ^2.16
Conflicts
- sonata-project/admin-bundle: <3.27
This package is auto-updated.
Last update: 2024-09-06 07:28:14 UTC
README
这是一个正在进行中的项目,如果您想实现某些功能,请随时提出建议或贡献以帮助我们!
资源
目的
通过 tinyPNG 服务自动化图像优化。您可以使用客户端或通过 Sonata Media 和 Sonata Notification 获取完整流程。
安装
步骤 1: 添加依赖
$ composer require ekino/tiny-png-sonata-media-bundle
步骤 2: 注册包
Symfony 2 或 3
<?php // app/AppKernel.php public function registerBundles() { $bundles = [ // ... new Ekino\TinyPngSonataMediaBundle\EkinoTinyPngSonataMediaBundle(), // ... ]; }
Symfony 4
<?php // config/bundles.php return [ // ... Ekino\TinyPngSonataMediaBundle\EkinoTinyPngSonataMediaBundle::class => ['all' => true], // ... ];
步骤 3: 配置包
ekino_tiny_png_sonata_media: tiny_png_api_key: ~ # required providers: [] # default max_compression_count_by_month: 500 # default value defined in config
步骤 4: 定义 Sonata 通知队列以实现异步行为
使用方法
使用 tinyPng 客户端
客户端可以直接用于通过 tinyPNG API 优化图像。但是,图像优化不应同步进行,因为它需要时间。
如果您了解自己在做什么,可以使用 ekino.tiny_png_sonata_media.tinify.client
及其 optimize
方法
<?php $client->optimize($inputPath, $outputPath, $overwrite);
与 Sonata Media 和通知的完整流程
此包监听 doctrine 事件(postPersist & postUpdate)在媒体实体上。一旦媒体的提供者在白名单中(在配置中定义),它将发布一个类型为 ekino.tiny_png_sonata_media.optimize_image
的 Sonata 通知消息,由消费者(Ekino\TinyPngSonataMediaBundle\Consumer\OptimizeImageConsumer
)处理。此消费者将与 tinyPNG API 联系以进行优化,在服务器上替换它并在数据库中更新媒体大小。
建议安装 LiipMonitorBundle
此包提供了一种服务,使用 liip/monitor-bundle 来检查本月的压缩次数。
注意
- 目前仅支持 Sonata\MediaBundle\Filesystem\Local 适配器。
- 此包仅处理 png、jpg 和 jpeg 文件扩展名,因为 tinyPNG 只处理这些扩展名。
- 优化后的缩略图再生尚不支持。