VichUploaderBundle и Symfony: получить exif из JPG - PullRequest
0 голосов
/ 01 апреля 2020

Я использую Symfony 5 с отличным VichUploaderBundle для загрузки изображений. Я пытаюсь получить информацию exif из файлов JPEG. Я использую функцию exif_read_data, и она в порядке (мой тест работает).

Теперь мне интересно, когда это лучший способ сохранить информацию EXIF ​​в моей сущности, пожалуйста?

У меня есть "Picture" с традиционным ImageFile, именем файла, ...

Я совершенно новичок в этом, и я не знаю, что делать.

Я добавил поле exif и setExif моей сущности, чтобы попытаться сохранить ее как время, поскольку сущность сохраняется, но она не работает. Лучше ли вызывать слушателя после того, как объект создан, а затем сделать еще одно сохранение для сохранения информации exif? Или, возможно, измените UploadableField, добавив опцию Exif (у нас уже есть размер, оригинальное имя файла, ...), но я думаю, что это явно не самое лучшее.

Пока у меня есть это (когда я загружаю свой изображение), но оно не работает:

Моя сущность Picture выглядит следующим образом:

  /**
     * @ORM\Column(type="array", nullable=true)
     */
    private $exif_file = [];

    public function setImageFile(?File $imageFile = null): void
    {
        $this->imageFile = $imageFile;

        if (null !== $imageFile) {
            $this->updated_at = new \DateTimeImmutable("now",new \DateTimeZone('Europe/Paris'));
        }
    }

    public function setExifFile(?array $exif_file): self
    {
        $this->exif_file = $exif_file;
        return $this;
    }

Моя форма находится в другой сущности (A), и моя загрузка определена так:

->add('pictureFiles', FileType::class,[
                'required'=>false,
                'multiple'=>true,
            ])

Эта сущность имеет:

public function setPictureFiles($pictureFiles): self
    {
        foreach ($pictureFiles as $pictureFile) {

            $picture = new Picture();
            $picture->setImageFile($pictureFile);

           $path = 'http://mywebsite'.$this->helper->asset($picture->getImageFile(), 'imageFile');

            $exif_file = exif_read_data($path,null,true)['FILE'];

            $picture->setExifFile($exif_file);

            $this->addPicture($picture);
        }
        $this->pictureFiles = $pictureFiles;
        return $this;
    }

Проблема в том, что мне не удается получить путь к файлу.

Я пробовал разные способы, но безуспешно.

Когда сущность создается, она работает следующим образом: $this->helper->asset($picture, 'imageFile');

Большое спасибо за вашу помощь!

...