| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <?php
- declare(strict_types=1);
- namespace App\Service\File\Utils;
- use App\Entity\Core\File;
- use Liip\ImagineBundle\Imagine\Data\DataManager;
- use Liip\ImagineBundle\Imagine\Filter\FilterManager;
- class ImageUtils
- {
- protected const FILTER_CROP = 'crop_filter';
- public function __construct(
- private DataManager $dataManager,
- private FilterManager $filterManager
- ){}
- /**
- * Permet de cropper et retourner une image
- * @param File $file : File contenant la définition de l'image
- * @return string : Image en Base64
- */
- public function cropImage(File $file): string{
- //On récupère l'image via le dataloader d'imagine liip (dataloader stream qui s'appuie sur gaufrette)
- $binary = $this->dataManager->find(self::FILTER_CROP, $file->getPath());
- //Si on a une config, on créer l'image
- if(!empty($file->getConfig())){
- //On applique le filtre crop et on retourne l'image
- $binary = $this->filterManager->applyFilter($binary, self::FILTER_CROP, $this->getCroppingConfig($file->getConfig()));
- }
- return $binary->getContent();
- }
- /**
- * Définit et retourne le tableau de config servant à cropper
- * @param string $config : Configuration du File
- * @return array[] : tableau de configuration
- */
- private function getCroppingConfig(string $config): array{
- $config = json_decode($config, true);
- return [
- 'filters' => [
- 'crop' => [
- 'size' => [intval($config['width']), intval($config['height'])],
- 'start' => [intval($config['x']), intval($config['y'])]
- ]
- ]
- ];
- }
- }
|