Skip to content

Commit

Permalink
Add SplFileInfoImageDecoder
Browse files Browse the repository at this point in the history
  • Loading branch information
olivervogel committed Oct 28, 2023
1 parent 63fd3d5 commit c767007
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 0 deletions.
21 changes: 21 additions & 0 deletions src/Drivers/Gd/Decoders/SplFileInfoImageDecoder.php
@@ -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());
}
}
2 changes: 2 additions & 0 deletions src/Drivers/Gd/InputHandler.php
Expand Up @@ -15,6 +15,7 @@
use Intervention\Image\Drivers\Gd\Decoders\BinaryImageDecoder;
use Intervention\Image\Drivers\Gd\Decoders\DataUriImageDecoder;
use Intervention\Image\Drivers\Gd\Decoders\Base64ImageDecoder;
use Intervention\Image\Drivers\Gd\Decoders\SplFileInfoImageDecoder;

class InputHandler extends AbstractInputHandler
{
Expand All @@ -28,6 +29,7 @@ class InputHandler extends AbstractInputHandler
HtmlColornameDecoder::class,
FilePointerImageDecoder::class,
FilePathImageDecoder::class,
SplFileInfoImageDecoder::class,
BinaryImageDecoder::class,
DataUriImageDecoder::class,
Base64ImageDecoder::class,
Expand Down
21 changes: 21 additions & 0 deletions src/Drivers/Imagick/Decoders/SplFileInfoImageDecoder.php
@@ -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());
}
}
2 changes: 2 additions & 0 deletions src/Drivers/Imagick/InputHandler.php
Expand Up @@ -15,6 +15,7 @@
use Intervention\Image\Drivers\Imagick\Decoders\BinaryImageDecoder;
use Intervention\Image\Drivers\Imagick\Decoders\DataUriImageDecoder;
use Intervention\Image\Drivers\Imagick\Decoders\Base64ImageDecoder;
use Intervention\Image\Drivers\Imagick\Decoders\SplFileInfoImageDecoder;

class InputHandler extends AbstractInputHandler
{
Expand All @@ -28,6 +29,7 @@ class InputHandler extends AbstractInputHandler
HtmlColornameDecoder::class,
FilePointerImageDecoder::class,
FilePathImageDecoder::class,
SplFileInfoImageDecoder::class,
BinaryImageDecoder::class,
DataUriImageDecoder::class,
Base64ImageDecoder::class,
Expand Down
9 changes: 9 additions & 0 deletions tests/Drivers/Gd/InputHandlerTest.php
Expand Up @@ -7,6 +7,7 @@
use Intervention\Image\Drivers\Gd\InputHandler;
use Intervention\Image\Exceptions\DecoderException;
use Intervention\Image\Tests\TestCase;
use SplFileInfo;

/**
* @requires extension gd
Expand All @@ -29,6 +30,14 @@ public function testHandleBinaryImage(): void
$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
{
$handler = new InputHandler();
Expand Down
9 changes: 9 additions & 0 deletions tests/Drivers/Imagick/InputHandlerTest.php
Expand Up @@ -2,6 +2,7 @@

namespace Intervention\Image\Tests\Drivers\Imagick;

use SplFileInfo;
use Intervention\Image\Colors\Rgb\Color as RgbColor;
use Intervention\Image\Drivers\Imagick\Image;
use Intervention\Image\Drivers\Imagick\InputHandler;
Expand Down Expand Up @@ -29,6 +30,14 @@ public function testHandleBinaryImage(): void
$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
{
$handler = new InputHandler();
Expand Down

0 comments on commit c767007

Please sign in to comment.