Skip to content

Commit

Permalink
Merge pull request #477 from teohhanhui/patch-output-format
Browse files Browse the repository at this point in the history
Support custom output format for each filter set
  • Loading branch information
makasim committed Sep 22, 2014
2 parents 38f4d2e + cf98b7d commit eb695e5
Show file tree
Hide file tree
Showing 5 changed files with 339 additions and 27 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/bin/phpunit
/bin/
/phpunit.xml
composer.lock
composer.phar
Expand Down
1 change: 1 addition & 0 deletions DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ public function getConfigTreeBuilder()
->fixXmlConfig('filter', 'filters')
->children()
->scalarNode('quality')->defaultValue(100)->end()
->scalarNode('format')->defaultNull()->end()
->booleanNode('animated')->defaultFalse()->end()
->scalarNode('cache')->defaultNull()->end()
->scalarNode('data_loader')->defaultNull()->end()
Expand Down
28 changes: 19 additions & 9 deletions Imagine/Filter/FilterManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@

use Imagine\Image\ImagineInterface;
use Liip\ImagineBundle\Binary\BinaryInterface;
use Liip\ImagineBundle\Binary\MimeTypeGuesserInterface;
use Liip\ImagineBundle\Imagine\Filter\Loader\LoaderInterface;

use Liip\ImagineBundle\Model\Binary;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class FilterManager
{
Expand All @@ -22,19 +20,29 @@ class FilterManager
*/
protected $imagine;

/**
* @var MimeTypeGuesserInterface
*/
protected $mimeTypeGuesser;

/**
* @var LoaderInterface[]
*/
protected $loaders = array();

/**
* @param FilterConfiguration $filterConfig
* @param ImagineInterface $imagine
* @param FilterConfiguration $filterConfig
* @param ImagineInterface $imagine
* @param MimeTypeGuesserInterface $mimeTypeGuesser
*/
public function __construct(FilterConfiguration $filterConfig, ImagineInterface $imagine)
{
public function __construct(
FilterConfiguration $filterConfig,
ImagineInterface $imagine,
MimeTypeGuesserInterface $mimeTypeGuesser
) {
$this->filterConfig = $filterConfig;
$this->imagine = $imagine;
$this->mimeTypeGuesser = $mimeTypeGuesser;
}

/**
Expand Down Expand Up @@ -97,9 +105,11 @@ public function apply(BinaryInterface $binary, array $config)
$options['animated'] = $config['animated'];
}

$filteredContent = $image->get($binary->getFormat(), $options);
$filteredFormat = isset($config['format']) ? $config['format'] : $binary->getFormat();
$filteredContent = $image->get($filteredFormat, $options);
$filteredMimeType = $filteredFormat === $binary->getFormat() ? $binary->getMimeType() : $this->mimeTypeGuesser->guess($filteredContent);

return new Binary($filteredContent, $binary->getMimeType(), $binary->getFormat());
return new Binary($filteredContent, $filteredMimeType, $filteredFormat);
}

/**
Expand Down
1 change: 1 addition & 0 deletions Resources/config/imagine.xml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
<service id="liip_imagine.filter.manager" class="%liip_imagine.filter.manager.class%">
<argument type="service" id="liip_imagine.filter.configuration" />
<argument type="service" id="liip_imagine" />
<argument type="service" id="liip_imagine.binary.mime_type_guesser" />
</service>

<service id="liip_imagine.data.manager" class="%liip_imagine.data.manager.class%">
Expand Down
Loading

0 comments on commit eb695e5

Please sign in to comment.