diff --git a/Resources/doc/basic-usage.rst b/Resources/doc/basic-usage.rst
index e25596102..66e08c6ee 100644
--- a/Resources/doc/basic-usage.rst
+++ b/Resources/doc/basic-usage.rst
@@ -21,11 +21,11 @@ you want to thumbnail an image to a size of 120x90 pixels:
filters:
thumbnail: { size: [120, 90], mode: outbound }
-You've now defined a filter set called `my_thumb` that performs a thumbnail
-transformation. We'll learn more about available transformations later, but
+You've now defined a filter set called ``my_thumb`` that performs a thumbnail
+transformation. We'll learn more about available transformations later, but
for now, this new filter can be used immediately in a template:
-.. configuration-block:
+.. configuration-block::
.. code-block:: html+jinja
@@ -35,17 +35,17 @@ for now, this new filter can be used immediately in a template:
-Behind the scenes, the bundles applies the filter(s) to the image on the
+Behind the scenes, the bundles applies the filter(s) to the image on the
first request and then caches the image to a similar path. On the next request,
the cached image would be served directly from the file system.
In this example, the final rendered path would be something like
-`/media/cache/my_thumb/relative/path/to/image.jpg`. This is where Imagine
+``/media/cache/my_thumb/relative/path/to/image.jpg``. This is where Imagine
would save the filtered image file.
You can also pass some options at runtime:
-.. configuration-block:
+.. configuration-block::
.. code-block:: html+jinja
@@ -76,21 +76,21 @@ omit filters option will be applied all available filters.
If you need to access filtered image URL in your controller:
.. code-block:: php
-
+
$this->get('liip_imagine.cache.manager')->getBrowserPath('/relative/path/to/image.jpg', 'my_thumb', true),
-In this case, the final rendered path would contain some random data in the
-path ``/media/cache/my_thumb/S8rrlhhQ/relative/path/to/image.jpg``. This is where
+In this case, the final rendered path would contain some random data in the
+path ``/media/cache/my_thumb/S8rrlhhQ/relative/path/to/image.jpg``. This is where
Imagine would save the filtered image file.
.. note::
- Using the ``dev`` environment you might find that the images are not properly
- rendered when using the template helper. This is likely caused by having
- ``intercept_redirect`` enabled in your application configuration. To ensure
+ Using the ``dev`` environment you might find that the images are not properly
+ rendered when using the template helper. This is likely caused by having
+ ``intercept_redirect`` enabled in your application configuration. To ensure
that the images are rendered disable this option:
.. code-block:: yaml
-
+
web_profiler:
intercept_redirects: false
diff --git a/Resources/doc/filters.rst b/Resources/doc/filters.rst
index d0d9891f9..60a516614 100644
--- a/Resources/doc/filters.rst
+++ b/Resources/doc/filters.rst
@@ -5,7 +5,7 @@ Built-in Filters
----------------
The ``thumbnail`` filter
-~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~
The thumbnail filter, as the name implies, performs a thumbnail transformation
on your image.
@@ -24,10 +24,12 @@ annotated configuration examples:
filter_sets:
my_thumb_out:
filters:
- thumbnail: { size: [32, 32], mode: outbound } # Transforms 50x40 to 32x32, while cropping the width
+ # Transforms 50x40 to 32x32, while cropping the width
+ thumbnail: { size: [32, 32], mode: outbound }
my_thumb_in:
filters:
- thumbnail: { size: [32, 32], mode: inset } # Transforms 50x40 to 32x26, no cropping
+ # Transforms 50x40 to 32x26, no cropping
+ thumbnail: { size: [32, 32], mode: inset }
There is also an option ``allow_upscale`` (default: ``false``). By setting
@@ -67,8 +69,8 @@ annotated configuration examples:
The ``upscale`` filter
~~~~~~~~~~~~~~~~~~~~~~
-The upscale filter, as the name implies, performs a upscale transformation
-on your image. Configuration looks like this:
+It performs an upscale transformation on your image to increase its size to the
+given dimensions:
.. code-block:: yaml
@@ -79,10 +81,10 @@ on your image. Configuration looks like this:
upscale: { min: [800, 600] }
The ``downscale`` filter
-~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~
-The downscale filter, as the name implies, performs a downscale transformation
-on your image. Configuration looks like this:
+It performs a downscale transformation on your image to reduce its size to the
+given dimensions:
.. code-block:: yaml
@@ -95,8 +97,11 @@ on your image. Configuration looks like this:
The ``crop`` filter
~~~~~~~~~~~~~~~~~~~
-The crop filter, as the name implies, performs a crop transformation on your
-image. Configuration looks like this:
+It performs a crop transformation on your image. The ``start`` option defines
+the coordinates of the left-top pixel where the crop begins (the ``[0, 0]``
+coordinates correspond to the top leftmost pixel of the original image). The
+``size`` option defines in pixels the width and height (in this order) of the
+area cropped:
.. code-block:: yaml
@@ -109,8 +114,9 @@ image. Configuration looks like this:
The ``strip`` filter
~~~~~~~~~~~~~~~~~~~~
-The strip filter removes all profiles and comments from your image.
-Configuration looks like this:
+It removes all profiles and comments from your image to reduce its file size
+without degrading its quality. This filter provides no configuration options,
+so you just need to enable it as follows:
.. code-block:: yaml
@@ -123,8 +129,7 @@ Configuration looks like this:
The ``background`` filter
~~~~~~~~~~~~~~~~~~~~~~~~~
-The background filter sets a background color for your image, default is white
-(#FFF). Configuration looks like this:
+It sets a background color for the image. The default color is white (``#FFF``):
.. code-block:: yaml
@@ -134,8 +139,9 @@ The background filter sets a background color for your image, default is white
filters:
background: { color: '#00FFFF' }
-If you provide a ``size`` it will create a new image (this size and given
-color), and apply the original image on top:
+By default, the background color is only visible through the transparent sections
+of the image (if any). However, if you provide a ``size`` option, a new image is
+created (with the given size and color) and the original image is placed on top:
.. code-block:: yaml
@@ -174,8 +180,10 @@ ratio. Configuration looks like this:
The ``auto_rotate`` filter
~~~~~~~~~~~~~~~~~~~~~~~~~~
-The auto_rotate filter rotates the image based on its EXIF data. **(this filter
-should be called as early as possible)** Configuration looks like this:
+It rotates the image automatically to display it as correctly as possible. The
+rotation to apply is obtained through the metadata stored in the EXIF data of
+the original image. This filter provides no configuration options, so you just
+need to enable it as follows:
.. code-block:: yaml
@@ -185,11 +193,15 @@ should be called as early as possible)** Configuration looks like this:
filters:
auto_rotate: ~
+.. note::
+
+ This filter should be called as early as possible to get better results.
+
The ``rotate`` filter
~~~~~~~~~~~~~~~~~~~~~
-The rotate filter rotates the image based on specified angle (in degrees).
-Configuration looks like this:
+It rotates the image based on specified angle (in degrees). The value of the
+``angle`` configuration option must be a positive integer or float number:
.. code-block:: yaml
@@ -202,7 +214,7 @@ Configuration looks like this:
The ``interlace`` filter
~~~~~~~~~~~~~~~~~~~~~~~~
-Set progressive loading on the image. Configuration looks like this:
+It modifies the way the image is loaded progressively:
.. code-block:: yaml
@@ -211,25 +223,36 @@ Set progressive loading on the image. Configuration looks like this:
my_thumb:
filters:
interlace:
- # mode can be one of none,line,plane,partition
+ # mode can be one of: 'none', 'line', 'plane' and 'partition'
mode: line
Load your Custom Filters
------------------------
The ImagineBundle allows you to load your own custom filter classes. The only
-requirement is that each filter loader implement the following interface:
+requirement is that each filter loader implements the following interface:
``Liip\ImagineBundle\Imagine\Filter\Loader\LoaderInterface``.
To tell the bundle about your new filter loader, register it in the service
container and apply the ``liip_imagine.filter.loader`` tag to it (example here
in XML):
-.. code-block:: xml
+.. contiguration-block::
-
-
-
+ .. code-block:: yaml
+
+ # app/config/services.yml
+ app.filter.my_custom_filter:
+ class: AppBundle\Imagine\Filter\Loader\MyCustomFilterLoader
+ tags:
+ - { name: 'liip_imagine.filter.loader', loader: 'my_custom_filter' }
+
+ .. code-block:: xml
+
+
+
+
+
For more information on the service container, see the `Symfony Service Container`_
documentation.
@@ -282,13 +305,14 @@ A simple example showing how to change the filter configuration dynamically.
.. note::
- The constant ``Response::HTTP_MOVED_PERMANENTLY`` was introduced in version 2.4. Developers using older versions of Symfony, please replace the constant by ``301``.
+ The constant ``Response::HTTP_MOVED_PERMANENTLY`` was introduced in Symfony 2.4.
+ Developers using older versions of Symfony, please replace the constant by ``301``.
Post-Processors
---------------
Filters allow modifying the image, but in order to modify the resulting binary
-file created by filters, you can use post-processors Post-processors should
+file created by filters, you can use post-processors. Post-processors must
implement ``Liip\ImagineBundle\Imagine\Filter\PostProcessor\PostProcessorInterface``.
``PostProcessorInterface::process`` method receives ``BinaryInterface`` -
@@ -296,14 +320,24 @@ basically, the file containing an image after all filters have been applied. It
should return the ``BinaryInterface`` as well.
To tell the bundle about your post-processor, register it in the service
-container and apply the ``liip_imagine.filter.post_processor`` tag to it
-(example here in XML):
+container and apply the ``liip_imagine.filter.post_processor`` tag to it:
+
+.. contiguration-block::
+
+ .. code-block:: yaml
+
+ # app/config/services.yml
+ app.post_processor.my_custom_post_processor:
+ class: AppBundle\Imagine\Filter\PostProcessor\MyCustomPostProcessor
+ tags:
+ - { name: 'liip_imagine.filter.post_processor', post_processor: 'my_custom_post_processor' }
-.. code-block:: xml
+ .. code-block:: xml
-
-
-
+
+
+
+
For more information on the service container, see the `Symfony Service Container`_
documentation.
@@ -322,9 +356,9 @@ like to apply in your configuration:
For an example of a post processor implementation, refer to
``Liip\ImagineBundle\Imagine\Filter\PostProcessor\JpegOptimPostProcessor``.
-The ``JpegOptimPostProcessor`` can be used to provide lossless jpeg
+The ``JpegOptimPostProcessor`` can be used to provide lossless JPEG
optimization, which is good for you website loading speed. In order to add
-lossless jpeg optimization to your filters, use the following configuration:
+lossless JPEG optimization to your filters, use the following configuration:
.. code-block:: yaml