for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Liip\ImagineBundle\Imagine\Filter\Loader;
use Imagine\Filter\Basic\Thumbnail;
use Imagine\Image\Box;
use Imagine\Image\ImageInterface;
class ThumbnailFilterLoader implements LoaderInterface
{
/**
* {@inheritdoc}
*/
public function load(ImageInterface $image, array $options = array())
$mode = ImageInterface::THUMBNAIL_OUTBOUND;
if (!empty($options['mode']) && 'inset' === $options['mode']) {
$mode = ImageInterface::THUMBNAIL_INSET;
}
if (!empty($options['filter'])) {
$filter = constant('Imagine\Image\ImageInterface::FILTER_'.strtoupper($options['filter']));
if (empty($filter)) {
$filter = ImageInterface::FILTER_UNDEFINED;
$width = isset($options['size'][0]) ? $options['size'][0] : null;
$height = isset($options['size'][1]) ? $options['size'][1] : null;
$size = $image->getSize();
$origWidth = $size->getWidth();
$origHeight = $size->getHeight();
if (null === $width || null === $height) {
if (null === $height) {
$height = (int) (($width / $origWidth) * $origHeight);
} elseif (null === $width) {
$width = (int) (($height / $origHeight) * $origWidth);
if (($origWidth > $width || $origHeight > $height)
|| (!empty($options['allow_upscale']) && ($origWidth !== $width || $origHeight !== $height))
) {
$filter = new Thumbnail(new Box($width, $height), $mode, $filter);
$image = $filter->apply($image);
return $image;