mirror of
https://github.com/Intervention/image.git
synced 2025-08-15 10:23:59 +02:00
resize methods
This commit is contained in:
@@ -5,6 +5,7 @@ namespace Intervention\Image\Drivers\Abstract;
|
||||
use Intervention\Image\Collection;
|
||||
use Intervention\Image\EncodedImage;
|
||||
use Intervention\Image\Exceptions\NotWritableException;
|
||||
use Intervention\Image\Geometry\Resizer;
|
||||
use Intervention\Image\Geometry\Size;
|
||||
use Intervention\Image\Interfaces\EncoderInterface;
|
||||
use Intervention\Image\Interfaces\FrameInterface;
|
||||
@@ -59,6 +60,11 @@ abstract class AbstractImage
|
||||
return new Size($this->width(), $this->height());
|
||||
}
|
||||
|
||||
public function getResizer(): Resizer
|
||||
{
|
||||
return new Resizer($this->size());
|
||||
}
|
||||
|
||||
public function isAnimated(): bool
|
||||
{
|
||||
return $this->getFrames()->count() > 1;
|
||||
@@ -102,10 +108,39 @@ abstract class AbstractImage
|
||||
);
|
||||
}
|
||||
|
||||
public function resize(int $width, int $height): ImageInterface
|
||||
public function resize(...$arguments): ImageInterface
|
||||
{
|
||||
$size = $this->getResizer()->setTargetSizeByArray($arguments)->resize();
|
||||
|
||||
return $this->modify(
|
||||
$this->resolveDriverClass('Modifiers\ResizeModifier', $width, $height)
|
||||
$this->resolveDriverClass('Modifiers\ResizeModifier', $size)
|
||||
);
|
||||
}
|
||||
|
||||
public function resizeDown(...$arguments): ImageInterface
|
||||
{
|
||||
$size = $this->getResizer()->setTargetSizeByArray($arguments)->resizeDown();
|
||||
|
||||
return $this->modify(
|
||||
$this->resolveDriverClass('Modifiers\ResizeModifier', $size)
|
||||
);
|
||||
}
|
||||
|
||||
public function scale(...$arguments): ImageInterface
|
||||
{
|
||||
$size = $this->getResizer()->setTargetSizeByArray($arguments)->scale();
|
||||
|
||||
return $this->modify(
|
||||
$this->resolveDriverClass('Modifiers\ResizeModifier', $size)
|
||||
);
|
||||
}
|
||||
|
||||
public function scaleDown(...$arguments): ImageInterface
|
||||
{
|
||||
$size = $this->getResizer()->setTargetSizeByArray($arguments)->scaleDown();
|
||||
|
||||
return $this->modify(
|
||||
$this->resolveDriverClass('Modifiers\ResizeModifier', $size)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -5,23 +5,37 @@ namespace Intervention\Image\Drivers\Gd\Modifiers;
|
||||
use Intervention\Image\Interfaces\FrameInterface;
|
||||
use Intervention\Image\Interfaces\ImageInterface;
|
||||
use Intervention\Image\Interfaces\ModifierInterface;
|
||||
use Intervention\Image\Interfaces\SizeInterface;
|
||||
|
||||
class ResizeModifier implements ModifierInterface
|
||||
{
|
||||
protected $width;
|
||||
protected $height;
|
||||
/**
|
||||
* Target size
|
||||
*
|
||||
* @var SizeInterface
|
||||
*/
|
||||
protected $target;
|
||||
|
||||
public function __construct(int $width, int $height)
|
||||
public function __construct(SizeInterface $target)
|
||||
{
|
||||
$this->width = $width;
|
||||
$this->height = $height;
|
||||
$this->target = $target;
|
||||
}
|
||||
|
||||
public function apply(ImageInterface $image): ImageInterface
|
||||
{
|
||||
foreach ($image as $frame) {
|
||||
$framesize = $frame->getSize();
|
||||
$this->modify($frame, 0, 0, 0, 0, $this->width, $this->height, $framesize->getWidth(), $framesize->getHeight());
|
||||
$this->modify(
|
||||
$frame,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
$this->target->getWidth(),
|
||||
$this->target->getHeight(),
|
||||
$framesize->getWidth(),
|
||||
$framesize->getHeight()
|
||||
);
|
||||
}
|
||||
|
||||
return $image;
|
||||
|
@@ -5,22 +5,29 @@ namespace Intervention\Image\Drivers\Imagick\Modifiers;
|
||||
use Intervention\Image\Interfaces\FrameInterface;
|
||||
use Intervention\Image\Interfaces\ImageInterface;
|
||||
use Intervention\Image\Interfaces\ModifierInterface;
|
||||
use Intervention\Image\Interfaces\SizeInterface;
|
||||
|
||||
class ResizeModifier implements ModifierInterface
|
||||
{
|
||||
protected $width;
|
||||
protected $height;
|
||||
/**
|
||||
* Target size
|
||||
*
|
||||
* @var SizeInterface
|
||||
*/
|
||||
protected $target;
|
||||
|
||||
public function __construct(int $width, int $height)
|
||||
public function __construct(SizeInterface $target)
|
||||
{
|
||||
$this->width = $width;
|
||||
$this->height = $height;
|
||||
$this->target = $target;
|
||||
}
|
||||
|
||||
public function apply(ImageInterface $image): ImageInterface
|
||||
{
|
||||
foreach ($image as $frame) {
|
||||
$frame->getCore()->scaleImage($this->width, $this->height);
|
||||
$frame->getCore()->scaleImage(
|
||||
$this->target->getWidth(),
|
||||
$this->target->getHeight()
|
||||
);
|
||||
}
|
||||
|
||||
return $image;
|
||||
|
Reference in New Issue
Block a user