Файл: concrete5.7.5.6/concrete/src/File/ImportProcessor/ConstrainImageProcessor.php
Строк: 109
<?php
namespace ConcreteCoreFileImportProcessor;
use ConcreteCoreFileTypeType;
use ConcreteCoreFileVersion;
use ImagineImageBox;
use ImagineImageImageInterface;
class ConstrainImageProcessor implements ProcessorInterface
{
protected $maxWidth;
protected $maxHeight;
protected $constraintMode = ImageInterface::THUMBNAIL_INSET;
public function __construct($maxWidth = null, $maxHeight = null, $constraintMode = null)
{
if ($maxWidth) {
$this->maxWidth = $maxWidth;
}
if ($maxHeight) {
$this->maxHeight = $maxHeight;
}
if ($constraintMode && $constraintMode != null) {
$this->constraintMode = $constraintMode;
}
}
/**
* @return mixed
*/
public function getMaxWidth()
{
return $this->maxWidth;
}
/**
* @param mixed $maxWidth
*/
public function setMaxWidth($maxWidth)
{
$this->maxWidth = $maxWidth;
}
/**
* @return mixed
*/
public function getMaxHeight()
{
return $this->maxHeight;
}
/**
* @param mixed $maxHeight
*/
public function setMaxHeight($maxHeight)
{
$this->maxHeight = $maxHeight;
}
/**
* @return string
*/
public function getConstraintMode()
{
return $this->constraintMode;
}
/**
* @param string $constraintMode
*/
public function setConstraintMode($constraintMode)
{
$this->constraintMode = $constraintMode;
}
public function shouldProcess(Version $version)
{
return $version->getTypeObject()->getGenericType() == Type::T_IMAGE;
}
public function process(Version $version)
{
$fr = $version->getFileResource();
$image = Image::load($fr->read());
$fr = $version->getFileResource();
$width = $this->getMaxWidth();
$height = $this->getMaxHeight();
$mode = $this->getConstraintMode();
$thumbnail = $image->thumbnail(new Box($width, $height), $mode);
$mimetype = $fr->getMimeType();
$thumbnailOptions = array();
switch ($mimetype) {
case 'image/jpeg':
$thumbnailType = 'jpeg';
$thumbnailOptions = array('jpeg_quality' => Config::get('concrete.misc.default_jpeg_image_compression'));
break;
case 'image/png':
$thumbnailType = 'png';
break;
case 'image/gif':
$thumbnailType = 'gif';
break;
case 'image/xbm':
$thumbnailType = 'xbm';
break;
case 'image/vnd.wap.wbmp':
$thumbnailType = 'wbmp';
break;
default:
$thumbnailType = 'png';
break;
}
$version->updateContents($thumbnail->get($thumbnailType, $thumbnailOptions));
}
}