1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-11 08:24:02 +02:00

Add SplFileInfoImageDecoder

This commit is contained in:
Oliver Vogel
2023-10-28 11:05:11 +02:00
parent 63fd3d5fca
commit c767007a85
6 changed files with 64 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
<?php
namespace Intervention\Image\Drivers\Gd\Decoders;
use SplFileInfo;
use Intervention\Image\Exceptions\DecoderException;
use Intervention\Image\Interfaces\ColorInterface;
use Intervention\Image\Interfaces\DecoderInterface;
use Intervention\Image\Interfaces\ImageInterface;
class SplFileInfoImageDecoder extends FilePathImageDecoder implements DecoderInterface
{
public function decode($input): ImageInterface|ColorInterface
{
if (! is_a($input, SplFileInfo::class)) {
throw new DecoderException('Unable to decode input');
}
return parent::decode($input->getRealPath());
}
}

View File

@@ -15,6 +15,7 @@ use Intervention\Image\Drivers\Gd\Decoders\FilePathImageDecoder;
use Intervention\Image\Drivers\Gd\Decoders\BinaryImageDecoder; use Intervention\Image\Drivers\Gd\Decoders\BinaryImageDecoder;
use Intervention\Image\Drivers\Gd\Decoders\DataUriImageDecoder; use Intervention\Image\Drivers\Gd\Decoders\DataUriImageDecoder;
use Intervention\Image\Drivers\Gd\Decoders\Base64ImageDecoder; use Intervention\Image\Drivers\Gd\Decoders\Base64ImageDecoder;
use Intervention\Image\Drivers\Gd\Decoders\SplFileInfoImageDecoder;
class InputHandler extends AbstractInputHandler class InputHandler extends AbstractInputHandler
{ {
@@ -28,6 +29,7 @@ class InputHandler extends AbstractInputHandler
HtmlColornameDecoder::class, HtmlColornameDecoder::class,
FilePointerImageDecoder::class, FilePointerImageDecoder::class,
FilePathImageDecoder::class, FilePathImageDecoder::class,
SplFileInfoImageDecoder::class,
BinaryImageDecoder::class, BinaryImageDecoder::class,
DataUriImageDecoder::class, DataUriImageDecoder::class,
Base64ImageDecoder::class, Base64ImageDecoder::class,

View File

@@ -0,0 +1,21 @@
<?php
namespace Intervention\Image\Drivers\Imagick\Decoders;
use SplFileInfo;
use Intervention\Image\Exceptions\DecoderException;
use Intervention\Image\Interfaces\ColorInterface;
use Intervention\Image\Interfaces\DecoderInterface;
use Intervention\Image\Interfaces\ImageInterface;
class SplFileInfoImageDecoder extends FilePathImageDecoder implements DecoderInterface
{
public function decode($input): ImageInterface|ColorInterface
{
if (! is_a($input, SplFileInfo::class)) {
throw new DecoderException('Unable to decode input');
}
return parent::decode($input->getRealPath());
}
}

View File

@@ -15,6 +15,7 @@ use Intervention\Image\Drivers\Imagick\Decoders\FilePathImageDecoder;
use Intervention\Image\Drivers\Imagick\Decoders\BinaryImageDecoder; use Intervention\Image\Drivers\Imagick\Decoders\BinaryImageDecoder;
use Intervention\Image\Drivers\Imagick\Decoders\DataUriImageDecoder; use Intervention\Image\Drivers\Imagick\Decoders\DataUriImageDecoder;
use Intervention\Image\Drivers\Imagick\Decoders\Base64ImageDecoder; use Intervention\Image\Drivers\Imagick\Decoders\Base64ImageDecoder;
use Intervention\Image\Drivers\Imagick\Decoders\SplFileInfoImageDecoder;
class InputHandler extends AbstractInputHandler class InputHandler extends AbstractInputHandler
{ {
@@ -28,6 +29,7 @@ class InputHandler extends AbstractInputHandler
HtmlColornameDecoder::class, HtmlColornameDecoder::class,
FilePointerImageDecoder::class, FilePointerImageDecoder::class,
FilePathImageDecoder::class, FilePathImageDecoder::class,
SplFileInfoImageDecoder::class,
BinaryImageDecoder::class, BinaryImageDecoder::class,
DataUriImageDecoder::class, DataUriImageDecoder::class,
Base64ImageDecoder::class, Base64ImageDecoder::class,

View File

@@ -7,6 +7,7 @@ use Intervention\Image\Drivers\Gd\Image;
use Intervention\Image\Drivers\Gd\InputHandler; use Intervention\Image\Drivers\Gd\InputHandler;
use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Exceptions\DecoderException;
use Intervention\Image\Tests\TestCase; use Intervention\Image\Tests\TestCase;
use SplFileInfo;
/** /**
* @requires extension gd * @requires extension gd
@@ -29,6 +30,14 @@ class GdInputHandlerTest extends TestCase
$this->assertInstanceOf(Image::class, $result); $this->assertInstanceOf(Image::class, $result);
} }
public function testHandleSplFileInfo(): void
{
$handler = new InputHandler();
$input = new SplFileInfo(__DIR__ . '/../../images/test.jpg');
$result = $handler->handle($input);
$this->assertInstanceOf(Image::class, $result);
}
public function testHandleFilePathImage(): void public function testHandleFilePathImage(): void
{ {
$handler = new InputHandler(); $handler = new InputHandler();

View File

@@ -2,6 +2,7 @@
namespace Intervention\Image\Tests\Drivers\Imagick; namespace Intervention\Image\Tests\Drivers\Imagick;
use SplFileInfo;
use Intervention\Image\Colors\Rgb\Color as RgbColor; use Intervention\Image\Colors\Rgb\Color as RgbColor;
use Intervention\Image\Drivers\Imagick\Image; use Intervention\Image\Drivers\Imagick\Image;
use Intervention\Image\Drivers\Imagick\InputHandler; use Intervention\Image\Drivers\Imagick\InputHandler;
@@ -29,6 +30,14 @@ class InputHandlerTest extends TestCase
$this->assertInstanceOf(Image::class, $result); $this->assertInstanceOf(Image::class, $result);
} }
public function testHandleSplFileInfo(): void
{
$handler = new InputHandler();
$input = new SplFileInfo(__DIR__ . '/../../images/test.jpg');
$result = $handler->handle($input);
$this->assertInstanceOf(Image::class, $result);
}
public function testHandleFilePathImage(): void public function testHandleFilePathImage(): void
{ {
$handler = new InputHandler(); $handler = new InputHandler();