1. Go to this page and download the library: Download in2code/imager library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
in2code / imager example snippets
declare(strict_types=1);
namespace Vendor\MyExtension\Domain\Repository\Llm;
use In2code\Imager\Domain\Repository\Llm\AbstractRepository;
use In2code\Imager\Domain\Repository\Llm\RepositoryInterface;
use In2code\Imager\Exception\ApiException;
use In2code\Imager\Exception\ConfigurationException;
use TYPO3\CMS\Core\Http\RequestFactory;
use TYPO3\CMS\Core\Resource\File;
use TYPO3\CMS\Core\Resource\ResourceFactory;
use TYPO3\CMS\Core\Resource\StorageRepository;
class DallERepository extends AbstractRepository implements RepositoryInterface
{
private string $apiKey = '';
private string $apiUrl = 'https://api.openai.com/v1/images/generations';
public function __construct(
protected StorageRepository $storageRepository,
protected ResourceFactory $resourceFactory,
protected RequestFactory $requestFactory,
) {
parent::__construct($storageRepository, $resourceFactory, $requestFactory);
$this->apiKey = getenv('OPENAI_API_KEY') ?: '';
}
public function checkApiKey(): void
{
if ($this->apiKey === '') {
throw new ConfigurationException('OpenAI API key not configured', 1735646100);
}
}
public function getApiUrl(): string
{
return $this->apiUrl;
}
public function getImage(string $prompt): File
{
$this->checkApiKey();
$imageData = $this->generateImageWithDallE($prompt);
return $this->saveImageToStorage($imageData, $prompt);
}
protected function generateImageWithDallE(string $prompt): string
{
$payload = [
'model' => 'dall-e-3',
'prompt' => $prompt,
'n' => 1,
'size' => '1024x1024',
'response_format' => 'b64_json',
];
$options = [
'headers' => [
'Authorization' => 'Bearer ' . $this->apiKey,
'Content-Type' => 'application/json',
],
'body' => json_encode($payload),
];
$response = $this->requestFactory->request($this->getApiUrl(), $this->requestMethod, $options);
if ($response->getStatusCode() !== 200) {
throw new ApiException(
'Failed to generate image with DALL-E: ' . $response->getBody()->getContents(),
1735646101
);
}
$responseData = json_decode($response->getBody()->getContents(), true);
if (isset($responseData['data'][0]['b64_json']) === false) {
throw new ApiException('Invalid DALL-E API response structure', 1735646102);
}
$this->mimeType = 'image/png';
return base64_decode($responseData['data'][0]['b64_json']);
}
}