mirror of
https://github.com/Intervention/image.git
synced 2025-08-16 02:44:01 +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\Collection;
|
||||||
use Intervention\Image\EncodedImage;
|
use Intervention\Image\EncodedImage;
|
||||||
use Intervention\Image\Exceptions\NotWritableException;
|
use Intervention\Image\Exceptions\NotWritableException;
|
||||||
|
use Intervention\Image\Geometry\Resizer;
|
||||||
use Intervention\Image\Geometry\Size;
|
use Intervention\Image\Geometry\Size;
|
||||||
use Intervention\Image\Interfaces\EncoderInterface;
|
use Intervention\Image\Interfaces\EncoderInterface;
|
||||||
use Intervention\Image\Interfaces\FrameInterface;
|
use Intervention\Image\Interfaces\FrameInterface;
|
||||||
@@ -59,6 +60,11 @@ abstract class AbstractImage
|
|||||||
return new Size($this->width(), $this->height());
|
return new Size($this->width(), $this->height());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getResizer(): Resizer
|
||||||
|
{
|
||||||
|
return new Resizer($this->size());
|
||||||
|
}
|
||||||
|
|
||||||
public function isAnimated(): bool
|
public function isAnimated(): bool
|
||||||
{
|
{
|
||||||
return $this->getFrames()->count() > 1;
|
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(
|
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\FrameInterface;
|
||||||
use Intervention\Image\Interfaces\ImageInterface;
|
use Intervention\Image\Interfaces\ImageInterface;
|
||||||
use Intervention\Image\Interfaces\ModifierInterface;
|
use Intervention\Image\Interfaces\ModifierInterface;
|
||||||
|
use Intervention\Image\Interfaces\SizeInterface;
|
||||||
|
|
||||||
class ResizeModifier implements ModifierInterface
|
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->target = $target;
|
||||||
$this->height = $height;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function apply(ImageInterface $image): ImageInterface
|
public function apply(ImageInterface $image): ImageInterface
|
||||||
{
|
{
|
||||||
foreach ($image as $frame) {
|
foreach ($image as $frame) {
|
||||||
$framesize = $frame->getSize();
|
$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;
|
return $image;
|
||||||
|
@@ -5,22 +5,29 @@ namespace Intervention\Image\Drivers\Imagick\Modifiers;
|
|||||||
use Intervention\Image\Interfaces\FrameInterface;
|
use Intervention\Image\Interfaces\FrameInterface;
|
||||||
use Intervention\Image\Interfaces\ImageInterface;
|
use Intervention\Image\Interfaces\ImageInterface;
|
||||||
use Intervention\Image\Interfaces\ModifierInterface;
|
use Intervention\Image\Interfaces\ModifierInterface;
|
||||||
|
use Intervention\Image\Interfaces\SizeInterface;
|
||||||
|
|
||||||
class ResizeModifier implements ModifierInterface
|
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->target = $target;
|
||||||
$this->height = $height;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function apply(ImageInterface $image): ImageInterface
|
public function apply(ImageInterface $image): ImageInterface
|
||||||
{
|
{
|
||||||
foreach ($image as $frame) {
|
foreach ($image as $frame) {
|
||||||
$frame->getCore()->scaleImage($this->width, $this->height);
|
$frame->getCore()->scaleImage(
|
||||||
|
$this->target->getWidth(),
|
||||||
|
$this->target->getHeight()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $image;
|
return $image;
|
||||||
|
Reference in New Issue
Block a user