From ed5a2d8a112a27d283d4e0f40a350f1de63989cb Mon Sep 17 00:00:00 2001 From: MartkCz Date: Thu, 20 May 2021 21:35:05 +0200 Subject: [PATCH] add docs --- .docs/README.md | 1 + .docs/filters-options.md | 72 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 .docs/filters-options.md diff --git a/.docs/README.md b/.docs/README.md index a61ea7e..789be05 100644 --- a/.docs/README.md +++ b/.docs/README.md @@ -7,6 +7,7 @@ - [Doctrine](doctrine.md) - Filters (image manipulation) - [Imagine filters](imagine.md) + - [Filters with dynamic options](filters-options.md) - Examples - [Gumlet + Google Storage](examples/gumlet-googleStorage.md) diff --git a/.docs/filters-options.md b/.docs/filters-options.md new file mode 100644 index 0000000..a0c4cf9 --- /dev/null +++ b/.docs/filters-options.md @@ -0,0 +1,72 @@ +# Filters with dynamic options + +When we need a lot of variants of filter, we have to create filters individually. With options, we just define one. + +Replace filter resolver from default (can't options) to one of: + +### Contributte\Imagist\Resolver\FilterResolvers\SimpleFilterResolver +Readable but simple format, options must be list of string, int or bool. + +Example of output: +```php +$image->withFilter('resize', [15, 50]); // output: /cache/_resize-15-50/image.jpg +``` + +Usage: +```yaml +services: + imagist.resolvers.filter: Contributte\Imagist\Resolver\FilterResolvers\SimpleFilterResolver +``` + +### Contributte\Imagist\Resolver\FilterResolvers\MD5FilterResolver +Options must array of scalar + +Example of output: +```php +$image->withFilter('resize', [15, 50]); // output: /cache/_resize-4a783f58efd342dee8bcbce90617131b/image.jpg +``` + +Usage: +```yaml +services: + imagist.resolvers.filter: Contributte\Imagist\Resolver\FilterResolvers\MD5FilterResolver +``` + +## Options in operation + +```php + +use Contributte\Imagist\Bridge\Imagine\OperationInterface; +use Contributte\Imagist\Filter\FilterInterface; +use Contributte\Imagist\Scope\Scope; +use Imagine\Image\Box; +use Imagine\Image\ImageInterface; + +class ResizeOperation implements OperationInterface +{ + + public function supports(FilterInterface $filter, Scope $scope): bool + { + return $filter->getName() === 'resize'; + } + + public function operate(ImageInterface $image, FilterInterface $filter): void + { + $image->resize(new Box(...$filter->getOptions())); + } + +} + +``` + +## Usage + +PHP: +```php +$image->withFilter('resize', [15, 50]); // output: /cache/_resize-4a783f58efd342dee8bcbce90617131b/image.jpg +``` + +Latte: +```html +{img $image|filter:resize,15,50} +```