使用不带过滤器的LiipImagineBundle

时间:2016-08-06 14:15:54

标签: symfony liipimaginebundle

我在Symfony2项目中使用LiipImagineBundle,一切都很顺利。我已经定义了一个缩略图过滤器:

<img src="{{ 'bundles/app/images/home/warning.jpg'|imagine_filter('') }}" alt="Warning" />
<img src="{{ 'bundles/app/images/home/warning.jpg'|imagine_filter() }}" alt="Warning" />

它完美无缺,但我的一些图像不需要任何过滤器,所以我试图删除过滤器:

{% image '@AppBundle/Resources/public/images/example.jpg' %}
  <img src="{{ asset_url }}" alt="Example" />
{% endimage %}

**编辑以纠正示例,因为malcolm指出

但它不起作用,所以我需要对这些图像使用Assetic

Data

我在bundle的文档中找不到任何允许我在没有过滤器的情况下使用Bundle的选项。真的吗?当然,我可以使用LiipImagineBundle方式在需要过滤器时包含图像,而在不需要时使用Assetic方式,但是在实现几乎相同的两种不同方式之间切换是非常烦人的。

1 个答案:

答案 0 :(得分:0)

回答你的问题 - 创建一个original大小的过滤器然后:)。像这样:

class OriginalSizeFilter implements LoaderInterface
{
    public function load(ImageInterface $image, array $options = [])
    {
        $size = $image->getSize();
        $origWidth = $size->getWidth();
        $origHeight = $size->getHeight();

        $filter = new Thumbnail(new Box($origWidth, $origHeight));
        $image = $filter->apply($image);

        return $image;
    }
}

服务:

original_size_filter:
    class: ...\OriginalSizeFilter
    tags:
        - { name: liip_imagine.filter.loader, loader: original_size_filter }

config.yml:

filter_sets:
    original:
        filters:
            original_size_filter: ~

用法:

<img src="{{ 'bundles/app/images/home/warning.jpg'|imagine_filter('original') }}" alt="Warning" />

但是,如果您不想应用任何过滤器,为什么不使用asset()功能呢?