townsymush/ewww-client

此包已被弃用且不再维护。未建议替代包。

用于连接到 ewww API 并转换图像的客户端

1.0.3 2019-01-11 10:55 UTC

This package is auto-updated.

Last update: 2022-06-11 23:59:43 UTC


README

此客户端是使用 ewww.io API 将图像转换为 png、webp 并优化其网络使用的辅助工具。

要使用 ewww.io,您需要一个 API 密钥。访问 https://ewww.io 创建账户

请注意,任何 ewww.io 的功能完全由 ewww.io 负责,此包只是使用其 API 的辅助工具。

通过 composer 安装此包

composer require townsymush/ewww-client

使用方法

创建转换器的新实例。转换器需要一个字符串形式的 API 密钥和一个 Guzzle 客户端来发起 API 请求

use TownsyMush\EwwwClient\Converter;
use GuzzleHttp\Client;

$converter = new Converter(new Client, 'your-api-key');

要转换/优化图像,您需要创建一个 Job 进行处理。有两个作业 WebPJobFileJob

WebPJob

WebPJob 用于将图像(png、jpg)转换为 webp 文件。

创建作业

如果文件无法打开,将抛出异常。

use GuzzleHttp\Client;
use TownsyMush\EwwwClient\Converter;
use TownsyMush\EwwwClient\WebPJob;

$converter = new Converter(new Client, 'your-api-key');

// Create new instance with filename set as 'filename'
$job = new WebPJob('path-to-file', 'filename');

设置高度和宽度(可选)

如果您想更改图像的高度和宽度,必须在作业中设置两者。这些方法接受一个整数,将设置图像大小为像素。

$job->setWidth(100);
$job->setHeight(100);

设置图像质量(可选)

如果您想更改图像质量,请使用以下方法设置质量。注意默认值为 82。

$job->setQuality(82);

FileJob

此作业用于优化图像或将 jpggif 转换为 png

创建作业

如果文件无法打开,将抛出异常。

use GuzzleHttp\Client;
use TownsyMush\EwwwClient\Converter;
use TownsyMush\EwwwClient\FileJob;

$converter = new Converter(new Client, 'your-api-key');

// Create new instance with filename set as 'filename'
$job = new FileJob('path-to-file', 'filename');

设置图像质量(可选)

如果您想更改图像质量,请使用以下方法设置质量。注意默认值为 82,并且这仅在处理 PNG 图像且 convert 设置为 true 时有效。

$job->setQuality(82);

保留元数据(可选)

要保留图像文件中的元数据,将 metadata 设置为 true。注意:默认值为 false

$job->setMetadata(true);

有损压缩(可选)(推荐)

要设置有损压缩以实现更高的压缩率并最小化质量损失,请注意默认值为 false

$job->setLossy(true);

转换文件(可选)

要将文件类型转换为 true。这将在 ewww.io API 请求上启用转换模式(JPGPNGPNGJPGGIFPNG

$job->setConvert(true);

处理作业示例

一旦创建了一个作业,下一步就是使用转换器处理该作业。

use GuzzleHttp\Client;
use TownsyMush\EwwwClient\Converter;
use TownsyMush\EwwwClient\FileJob;

$converter = new Converter(new Client, 'your-api-key');

// Create new instance with filename set as 'filename'
$job = new FileJob('path-to-file', 'filename');

$response = $converter->process($job);

// The response object will contain a file response which you can write directly to a resource e.g.
file_put_contents($response, $response)

值得注意

不幸的是,ewww.io API 不返回错误状态代码,这可能导致客户端抛出异常。如果 API 请求失败,您需要检查响应以查找错误消息。

我们假设您在通过 ewww.io API 发送图像之前已经验证了您的图像。此包不会验证正在处理的图像类型。

测试

作为此包的一部分,我们编写了一些测试,您可以通过在项目目录中运行 ./vendor/bin/phpunit 来运行这些测试。您需要将 api-key 添加到测试中,并记住这将使用您 ewww.io 账户中的一些预付费积分。