Skip to content

Commit eb695e5

Browse files
committed
Merge pull request #477 from teohhanhui/patch-output-format
Support custom output format for each filter set
2 parents 38f4d2e + cf98b7d commit eb695e5

File tree

5 files changed

+339
-27
lines changed

5 files changed

+339
-27
lines changed

Diff for: .gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/bin/phpunit
1+
/bin/
22
/phpunit.xml
33
composer.lock
44
composer.phar

Diff for: DependencyInjection/Configuration.php

+1
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ public function getConfigTreeBuilder()
119119
->fixXmlConfig('filter', 'filters')
120120
->children()
121121
->scalarNode('quality')->defaultValue(100)->end()
122+
->scalarNode('format')->defaultNull()->end()
122123
->booleanNode('animated')->defaultFalse()->end()
123124
->scalarNode('cache')->defaultNull()->end()
124125
->scalarNode('data_loader')->defaultNull()->end()

Diff for: Imagine/Filter/FilterManager.php

+19-9
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@
44

55
use Imagine\Image\ImagineInterface;
66
use Liip\ImagineBundle\Binary\BinaryInterface;
7+
use Liip\ImagineBundle\Binary\MimeTypeGuesserInterface;
78
use Liip\ImagineBundle\Imagine\Filter\Loader\LoaderInterface;
8-
99
use Liip\ImagineBundle\Model\Binary;
10-
use Symfony\Component\HttpFoundation\Request;
11-
use Symfony\Component\HttpFoundation\Response;
1210

1311
class FilterManager
1412
{
@@ -22,19 +20,29 @@ class FilterManager
2220
*/
2321
protected $imagine;
2422

23+
/**
24+
* @var MimeTypeGuesserInterface
25+
*/
26+
protected $mimeTypeGuesser;
27+
2528
/**
2629
* @var LoaderInterface[]
2730
*/
2831
protected $loaders = array();
2932

3033
/**
31-
* @param FilterConfiguration $filterConfig
32-
* @param ImagineInterface $imagine
34+
* @param FilterConfiguration $filterConfig
35+
* @param ImagineInterface $imagine
36+
* @param MimeTypeGuesserInterface $mimeTypeGuesser
3337
*/
34-
public function __construct(FilterConfiguration $filterConfig, ImagineInterface $imagine)
35-
{
38+
public function __construct(
39+
FilterConfiguration $filterConfig,
40+
ImagineInterface $imagine,
41+
MimeTypeGuesserInterface $mimeTypeGuesser
42+
) {
3643
$this->filterConfig = $filterConfig;
3744
$this->imagine = $imagine;
45+
$this->mimeTypeGuesser = $mimeTypeGuesser;
3846
}
3947

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

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

102-
return new Binary($filteredContent, $binary->getMimeType(), $binary->getFormat());
112+
return new Binary($filteredContent, $filteredMimeType, $filteredFormat);
103113
}
104114

105115
/**

Diff for: Resources/config/imagine.xml

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
<service id="liip_imagine.filter.manager" class="%liip_imagine.filter.manager.class%">
7070
<argument type="service" id="liip_imagine.filter.configuration" />
7171
<argument type="service" id="liip_imagine" />
72+
<argument type="service" id="liip_imagine.binary.mime_type_guesser" />
7273
</service>
7374

7475
<service id="liip_imagine.data.manager" class="%liip_imagine.data.manager.class%">

0 commit comments

Comments
 (0)