Конвертировать изображение с помощью LiipImagineBundle

Я пытаюсь конвертировать изображение с помощью LiipImagineBundle. Файл хранится в подпапке storage/ в корневой папке приложения Symfony, а не в web/ папка. Это связано с тем, что перед доставкой изображений мне нужен специальный слой безопасности.

Например у меня есть изображение в папке symfony_app/storage/images/image.jpg, Теперь я хочу преобразовать его и сохранить отфильтрованное изображение в подпапке symfony_app/storage/images/thumbnail/image.jpg,

Сейчас попробую код

$imagineController = $this->container->get('liip_imagine.controller');
$imagineController->filterAction(new Request(), '/path/to/symfony_app/storage/images/image.jpg', 'thumbnail');

но я получаю сообщение об ошибке 404 с сообщением "Source image could not be found",

Я не понимаю, почему файл не может быть найден. Я также попробовал консольную команду

php bin/console liip:imagine:cache:resolve images/image.jpg

и получить результат:

[Imagine\Exception\RuntimeException]
Unable to open image /path/to/symfony_app/storage/images/image.jpg

storage/ подпапка имеет права доступа 777, и это моя конфигурация LiipImagine:

liip_imagine:
    loaders:
        default:
            filesystem:
                data_root: /var/www/actus-backend/storage/
    resolvers:
        default:
            web_path: ~
    filter_sets:
        cache: ~
        thumbnail:
            quality: 75
            filters:
                thumbnail: { size: [100, 100], mode: outbound }

1 ответ

Решение

Попробуйте установить путь хранения, используя kernel.root_dir параметр.

Если вам нужен путь к папке с защищенными изображениями в вашем слое безопасности, может быть полезно определить его как параметр. Повторно используйте этот параметр в конфигурации для пакета LiipImagine:

# app/config/config.yml
parameters:
    images_root_dir: "%kernel.root_dir%/../storage"

liip_imagine:
    loaders:
        default:
            filesystem:
                data_root: "%images_root_dir%"
Другие вопросы по тегам