locomotivemtl/charcoal-image-compression

通过压缩API提供程序处理图像压缩的Charcoal模块

0.2.0 2023-11-27 17:34 UTC

This package is auto-updated.

Last update: 2024-08-27 19:12:12 UTC


README

License Latest Stable Version Build Status

A Charcoal module to handle image compression through compression api providers

安装

首选(也是唯一支持的)方法是使用Composer

composer require locomotivemtl/charcoal-image-compression

依赖关系

必需

PSR

  • PSR-3:日志库的通用接口。由Monolog实现。
  • PSR-11:依赖容器的通用接口。由Pimple实现。

服务提供者

以下服务是通过使用 charcoal-image-compression 提供的

服务

配置

压缩模块的配置是通过项目配置的模块键来完成的。一旦配置,Charcoal图像将自动连接到压缩模块。

示例:通过image_compression定义的最小配置
"image_compression": {
    "providers": [/* … */]
}
示例:通过modules定义的最小配置
"modules": {
    "charcoal/image-compression/image-compression": {
        "providers": [/* … */]
    }
}
示例:通过modules定义的完整配置(带默认选项)
"modules": {
    "charcoal/image-compression/image-compression": {
        "registryObject": "charcoal/image-compression/model/registry",
        "batchConfig": {
            "fileExtensions": [ "jpg", "jpeg", "png" ],
            "basePath": "uploads"
        },
        "providers": [/* … */]
    }
},

模块选项

提供者

可以使用providers键来列出和配置一些提供者,这些提供者负责在Charcoal和不同的API之间架起桥梁。每个提供者定义自己的选项。以下是一个为tinify提供者配置的示例。

{
    "providers": [
        {
            "type": "tinify",
            "key": "XXXXXX"
        }
    ]
}

可以同时使用多个提供者,并将它们依次串联起来,以便如果某个提供者达到限制或失败,则将使用列表中的下一个提供者。

特殊提供者的列表

可用提供者的列表

用法

待办事项

默认情况下,如果提供者在模块配置中定义,Charcoal图像属性将在图像保存回调中将上传的图像压缩。必须使用将autoCompress选项设置为true的选项,这是默认行为。

脚本

提供了一个脚本来批量压缩服务器上的图像。

# Using default path from configuration
vendor/bin/charcoal admin/image-compression/batch-compress

# Using a custom path
vendor/bin/charcoal admin/image-compression/batch-compress --path my/custom/path

图像压缩器

压缩模块还可以通过ImageCompressor类作为独立模块使用。提供了一个容器服务来访问它。

// Fetch image conmpression from pimple container
$this->imageCompressor = $container['image-compressor'];

// The compress method is used to compress a source file path to a target path.
$this->imageCompressor->compress($source, $target)

ImageCompressor类将使用预定义的模块配置和提供者。对于自定义实现,请手动实例化提供者。

use Charcoal\ImageCompression\Provider\Tinify\TinifyProvider;

$provider = new TinifyProvider([...]);
$provider->compress($source, $target);

// Or use the special Chain Provider to chain providers together

use Charcoal\ImageCompression\Provider\Tinify\TinifyProvider;
use Charcoal\ImageCompression\Provider\Chain\ChainProvider;

$chainProvider = new ChainProvider([
    new TinifyProvider([...])
]);

$chainProvider->compress($source, $target);

开发

要安装开发环境

composer install

要运行脚本(phplint、phpcs和phpunit)

composer test

API文档

开发依赖

  • [php-coveralls/php-coveralls][phpcov]
  • [phpunit/phpunit][phpunit]
  • [squizlabs/php_codesniffer][phpcs]

编码风格

炭黑图像压缩模块遵循炭黑编码风格

可以使用composer phpcs执行编码风格验证/强制。还有自动修复工具composer phpcbf

致谢

许可证

炭黑遵循MIT许可证。详细信息请参阅LICENSE