使用LiipImagineBundle转换图像

时间:2017-06-17 16:51:26

标签: php symfony liipimaginebundle

我尝试使用LiipImagineBundle转换图像。该文件存储在symfony app根文件夹中的子文件夹storage/中,而不是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');

但是我收到了错误消息"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 个答案:

答案 0 :(得分: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%"