abyssale/abyssale

Abyssale 的 PHP SDK (https://abyssale.com)

0.1.0 2022-09-12 10:01 UTC

This package is auto-updated.

Last update: 2024-09-13 17:49:11 UTC


README

Sentry

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();

PDF

$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();