townsymush / ewww-client
用于连接到 ewww API 并转换图像的客户端
Requires
- php: >=7.1.0
- guzzlehttp/guzzle: 6.*
Requires (Dev)
- phpunit/phpunit: ^7
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
进行处理。有两个作业 WebPJob
和 FileJob
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
此作业用于优化图像或将 jpg
或 gif
转换为 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
请求上启用转换模式(JPG
到 PNG
,PNG
到 JPG
或 GIF
到 PNG
)
$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 账户中的一些预付费积分。