2016-08-06 11 views
-1

Я использую LiipImagineBundle в своем проекте Symfony2 и все отлично работает. Я определил фильтр миниатюру:Использование LiipImagineBundle без фильтров

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

И это прекрасно работает, но некоторые из моих изображений не нужно никаких фильтров, поэтому я попытался удалить фильтр:

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

** отредактирован исправить пример, как Малкольм указывает

Но это не работает, так что мне нужно использовать Assetic для этих изображений:

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

Я не могу найти в документации комплекта любой вариант, который позволяет мне использовать Bundle без фильтров. Это правда? Конечно, я могу использовать метод LiipImagineBundle для включения изображений, когда им нужен фильтр, и Assetic, когда они этого не делают, но переключение между двумя разными способами достижения почти одного и того же очень неприятно.

+0

Если вы не включаете 'imagine_filter()', вы не используете комплект, проблема, с которой вы связаны, не связана с комплектом идей. – malcolm

+0

Вы имеете в виду '{{'bundles/app/images/home/warning.jpg' | imagine_filter()}} '? Это не работает. 'Предупреждение: Отсутствует аргумент 2 для Liip \ ImagineBundle \ Templating \ ImagineExtension :: filter()' – DandyCC

+0

Нет, я имею в виду, что в вашем втором примере вы не используете предложении bundle, поэтому вопрос не связан с этим пакетом, и пучок работает, как ожидалось. – malcolm

ответ

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() функцию, если вы d Не хотите ли применять какие-либо фильтры?

Смежные вопросы