Вход Регистрация
Файл: vendor/intervention/image/src/Drivers/Gd/Modifiers/ResizeModifier.php
Строк: 88
<?php

declare(strict_types=1);

namespace 
InterventionImageDriversGdModifiers;

use 
InterventionImageDriversGdCloner;
use 
InterventionImageExceptionsColorException;
use 
InterventionImageExceptionsGeometryException;
use 
InterventionImageExceptionsRuntimeException;
use 
InterventionImageInterfacesFrameInterface;
use 
InterventionImageInterfacesImageInterface;
use 
InterventionImageInterfacesSizeInterface;
use 
InterventionImageInterfacesSpecializedInterface;
use 
InterventionImageModifiersResizeModifier as GenericResizeModifier;

class 
ResizeModifier extends GenericResizeModifier implements SpecializedInterface
{
    
/**
     * {@inheritdoc}
     *
     * @see ModifierInterface::apply()
     */
    
public function apply(ImageInterface $image): ImageInterface
    
{
        
$resizeTo $this->getAdjustedSize($image);
        foreach (
$image as $frame) {
            
$this->resizeFrame($frame$resizeTo);
        }

        return 
$image;
    }

    
/**
     * @throws ColorException
     */
    
private function resizeFrame(FrameInterface $frameSizeInterface $resizeTo): void
    
{
        
// create empty canvas in target size
        
$modified Cloner::cloneEmpty($frame->native(), $resizeTo);

        
// copy content from resource
        
imagecopyresampled(
            
$modified,
            
$frame->native(),
            
$resizeTo->pivot()->x(),
            
$resizeTo->pivot()->y(),
            
0,
            
0,
            
$resizeTo->width(),
            
$resizeTo->height(),
            
$frame->size()->width(),
            
$frame->size()->height()
        );

        
// set new content as resource
        
$frame->setNative($modified);
    }

    
/**
     * Return the size the modifier will resize to
     *
     * @param ImageInterface $image
     * @throws RuntimeException
     * @throws GeometryException
     * @return SizeInterface
     */
    
protected function getAdjustedSize(ImageInterface $image): SizeInterface
    
{
        return 
$image->size()->resize($this->width$this->height);
    }
}
Онлайн: 3
Реклама