Вход Регистрация
Файл: 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));
    }

}
Онлайн: 1
Реклама