abyssale / abyssale
Abyssale 的 PHP SDK (https://abyssale.com)
Requires
- php: >=7.4
- ext-json: *
- php-http/client-common: ^2.5
- php-http/discovery: ^1.0
- php-http/httplug: ^2.0
- php-http/message-factory: ^1.0
- psr/http-client-implementation: ^1.0
- psr/http-message: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.10
- guzzlehttp/psr7: ^2.0
- php-http/message: ^1.0
- php-http/mock-client: ^1.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-13 17:49:11 UTC
README
Abyssale SDK for PHP
根据在 Abyssale(https://www.abyssale.com/image-video-generation-api?utm_source=github&utm_medium=intro&utm_campaign=php)中创建的模板生成图像。此 PHP SDK 负责与 Abyssale API 进行通信。
要从开发者的角度来看更好地了解 Abyssale 的工作方式,您可以查看我们的 Abyssale 开发者门户。
安装
简要说明
composer require php-http/curl-client guzzlehttp/psr7 abyssale/abyssale
步骤详解
此库不依赖于特定发送 HTTP 请求的库。我们使用 HTTPlug 来实现解耦。您必须选择用于发送 HTTP 请求的库(请参阅支持 php-http/client-implementation
的包列表)。您可以使用基本的 curl 实现
composer require php-http/curl-client
您还需要安装一个 PSR-7 实现,以及一个用于创建 PSR-7 消息的工厂。您可以使用 Guzzle PSR-7 实现
composer require guzzlehttp/psr7
最后,您可以通过运行以下命令安装此库
composer require abyssale/abyssale
用法
获取您的 API 密钥
为了使用 Abyssale API,您需要从 Abyssale > 设置 > API 获取您的 API 密钥。
实例化客户端
$client = new Abyssale\Client('api_key');
如果您不希望依赖于 PSR-7 实现的发现,您可以指定第二个参数为 Psr\Http\Client\ClientInterface
,第三个参数为 Psr\Http\Message\RequestFactoryInterface
,第四个参数为 Psr\Http\Message\StreamFactoryInterface
。
生成图像
$templateId = "42ddb879-b894-41bc-896e-3edc8b3e33d2"; // Id of the template from which you want to generate an image $elementsForParis = [ 'city_name' => [ // name of the layer (in this case, this is a text layer) 'payload' => 'Paris' ], 'main_picture' => [ // name of the layer (in this case, this is an image layer) 'image_url' => 'https://acme.com/img/paris-eiffel-tower.jpeg' ], ]; $imageParis = $client->generateImage($templateId, 'instagram-story', $elementsForParis); echo $imageParis->getUrl(); $elementsForSeattle = [ 'city_name' => [ 'payload' => 'Seattle' ], 'main_picture' => [ 'image_url' => 'https://acme.com/img/seattle-space-needle.jpeg' ], ]; $imageSeattle = $client->generateImage($templateId, 'instagram-story', $elementsForSeattle); echo $imageSeattle->getUrl();
选项
您可以将不同的选项传递给 generateImage
方法的第四个参数
$image = $client->generateImage( $templateId, 'instagram-story', $elementsForSeattle, [ 'image_type' => 'png', 'compression_level' => 75, ] );
生成 PDF
您只能从类型为 print
的模板格式生成 PDF。
$templateId = "a51a9c5e-ab14-47d8-8d3e-521074273d8b"; // Id of the template from which you want to generate a PDF $elementsToOverride = [ 'employee_lastname' => [ 'payload' => 'John Doe' ], ]; $pdf = $client->generatePdf($templateId, 'a4', $elementsToOverride); echo $pdf->getUrl();
异步生成多个模板格式
如果您想在单个 API 调用中生成多个模板格式,您必须使用 异步生成方法。
图像
$templateId = "42ddb879-b894-41bc-896e-3edc8b3e33d2"; // Id of the template from which you want to generate an image $elementsToOverride = [ 'city_name' => [ // name of the layer (in this case, this is a text layer) 'payload' => 'Paris' ], 'main_picture' => [ // name of the layer (in this case, this is an image layer) 'image_url' => 'https://acme.com/img/paris-eiffel-tower.jpeg' ], ]; $generationRequest = $client->asyncGenerateImage( $templateId, ['instagram-story', 'facebook-post'], $elementsToOverride, 'https://webhook.acme.com/endpoint-images', // your specific webhook url [] // image options, see above ); echo $generationRequest->getId();
$templateId = "a51a9c5e-ab14-47d8-8d3e-521074273d8b"; // Id of the template from which you want to generate an image $elementsToOverride = [ 'employee_lastname' => [ 'payload' => 'John Doe' ], ]; $generationRequest = $client->asyncGeneratePdf( $templateId, ['a4', 'letter'], $elementsToOverride, 'https://webhook.acme.com/endpoint-images' // your specific webhook url ); echo $generationRequest->getId();