Download the PHP package socloz/imagine-bundle without Composer
On this page you can find all versions of the php package socloz/imagine-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download socloz/imagine-bundle
More information about socloz/imagine-bundle
Files in socloz/imagine-bundle
Package imagine-bundle
Short Description Image manipulation using Imagine and Twig Filters.
License MIT
Homepage https://github.com/avalanche123/AvalancheImagineBundle
Informations about the package imagine-bundle
AvalancheImagineBundle
This bundle provides easy image manipulation support for Symfony2. For example, with this bundle, the following is possible:
`
This will perform the transformation called thumbnail
, which you can define
to do a number of different things, such as resizing, cropping, drawing,
masking, etc.
This bundle integrates the standalone PHP "Imagine library".
Installation
Installation is a quick 3 step process:
- Download AvalancheImagineBundle using composer
- Enable the Bundle
- Configure your application's config.yml
Step 1: Download AvalancheImagineBundle using composer
Add AvalancheImagineBundle in your composer.json:
Now tell composer to download the bundle by running the command:
Composer will install the bundle to your project's vendor/avalanche123/imagine-bundle
directory.
Step 2: Enable the bundle
Enable the bundle in the kernel:
Step3: Register the bundle's routes
Finally, add the following to your routing file:
Congratulations! You're ready to rock your images!
Basic Usage
This bundle works by configuring a set of filters and then applying those filters to images inside a template. So, start by creating some sort of filter that you need to apply somewhere in your application. For example, suppose you want to thumbnail an image to a size of 120x90 pixels:
You can also change the quality and the format you want to use to save our image :
You've now defined a filter 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:
Or if you're using PHP templates:
Behind the scenes, the bundle 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
would save the filtered image file.
HTTP Cache Headers
-
cache_type
- one of the three values:false
,public
orprivate
. Settingfalse
disables caching i.e. setsCache-Control: no-cache
.default:
false
-
cache_expires
- Sets time when cache expires. Uses format that theDateTime
parser understands. Expression will be prefixed with+
so expression should be like2 weeks
. Used only whencache_type
equalpublic
orprivate
.default:
1 day
Configuration example:
Cache headers are set only for first request when image is generated. To solve this issue you should add additional configuration for your web server. Example for apache web server:
Configuration
The default configuration for the bundle looks like this:
There are several configuration options available:
-
source_root
- can be set to the absolute path to your original image's directory. This option allows you to store the original image in a different location from the web root. Under this root the images will be looked for in the same relative path specified in the apply_filter template filter.default:
%kernel.root_dir%/../web
-
web_root
- must be the absolute path to you application's web root. This is used to determine where to put generated image files, so that apache will pick them up before handing the request to Symfony2 next time they are requested.default:
%kernel.root_dir%/../web
-
cache_prefix
- this is also used in the path for image generation, so as to not clutter your web root with cached images. For example by default, the images would be written to theweb/media/cache/
directory.default:
media/cache
-
driver
- one of the three drivers:gd
,imagick
,gmagick
default:
gd
filters
- specify the filters that you want to define and use
Each filter that you specify have the following options:
type
- determine the type of filter to be used, refer to Filters section for more informationoptions
- options that should be passed to the specific filter typepath
- override the globalcache_prefix
and replace it with this path
Built-in Filters
Currently, this bundles comes with just one built-in filter: thumbnail
.
Thumbnail
The thumbnail
filter, as the name implies, performs a thumbnail transformation
on your image. The configuration looks like this:
The mode
can be either outbound
or inset
.
Resize
The resize
filter may be used to simply change the width and height of an
image irrespective of its proportions.
Consider the following configuration example, which defines two filters to alter an image to an exact screen resolution:
RelativeResize
The relative_resize
filter may be used to heighten
, widen
, increase
or
scale
an image with respect to its existing dimensions. These options directly
correspond to methods on Imagine's BoxInterface
.
Given an input image sized 50x40 (width, height), consider the following annotated configuration examples:
If you prefer using Imagine without a filter configuration, the RelativeResize
class may be used directly.
Paste
The paste
filter pastes an image into your image.
Chain
With chain
filter you can apply some filters on your image.
You can quite simply create a watermark
filter:
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:
Avalanche\Bundle\ImagineBundle\Imagine\Filter\Loader\LoaderInterface
To tell the bundle about your new filter loader, register it in the service container and apply the following tag to it (example here in XML):
For more information on the service container, see the Symfony2 Service Container documentation.
You can now reference and use your custom filter when defining filters you'd like to apply in your configuration:
For an example of a filter loader implementation, refer to
Avalanche\Bundle\ImagineBundle\Imagine\Filter\Loader\ThumbnailFilterLoader
.
Caveats
If you are generating your image names from multiple parts in a Twig template, please be aware that Twig applies filters before concatenation, so
will apply your filter to '.jpg', and then concatenate the result to
'/relative/path/to/'
and some_variable
. So the correct invocation would be
Using as a service
You can also use ImagineBundle as a service and create the cache image from controller.
Then, call the getBrowserPath and pass the original image webpath and the filter you want to use