ekino/tiny-png-sonata-media-bundle

Ekino 的 Tiny Png 与 SonataMedia 的集成

安装: 460

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 14

分支: 4

公开问题: 4

类型:symfony-bundle

v1.1.0 2021-08-13 12:50 UTC

README

Latest Stable Version Build Status Coverage Status Total Downloads

这是一个正在进行中的项目,如果您想实现某些功能,请随时提出建议或贡献以帮助我们!

资源

目的

通过 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 只处理这些扩展名。
  • 优化后的缩略图再生尚不支持。