1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-27 07:44:30 +02:00

Supported format detection (#1330)

* Implement data struture for format, media types & file extensions
* Refactor encoder resolving
* Extend type options in encoder methods
* Add DriverInterface::supports()
This commit is contained in:
Oliver Vogel
2024-04-13 18:42:48 +02:00
committed by GitHub
parent 5ee087e711
commit 8f6aabe8b9
17 changed files with 991 additions and 58 deletions

View File

@@ -7,10 +7,14 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick;
use Intervention\Image\Colors\Rgb\Colorspace;
use Intervention\Image\Colors\Rgb\Decoders\HexColorDecoder;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\FileExtension;
use Intervention\Image\Format;
use Intervention\Image\Interfaces\ColorInterface;
use Intervention\Image\Interfaces\ColorProcessorInterface;
use Intervention\Image\Interfaces\ImageInterface;
use Intervention\Image\MediaType;
use Intervention\Image\Tests\BaseTestCase;
use PHPUnit\Framework\Attributes\DataProvider;
final class DriverTest extends BaseTestCase
{
@@ -81,4 +85,122 @@ final class DriverTest extends BaseTestCase
$result = $this->driver->colorProcessor(new Colorspace());
$this->assertInstanceOf(ColorProcessorInterface::class, $result);
}
#[DataProvider('supportsDataProvider')]
public function testSupports(bool $result, mixed $identifier): void
{
$this->assertEquals($result, $this->driver->supports($identifier));
}
public static function supportsDataProvider(): array
{
return [
[true, Format::JPEG],
[true, MediaType::IMAGE_JPEG],
[true, MediaType::IMAGE_JPG],
[true, FileExtension::JPG],
[true, FileExtension::JPEG],
[true, 'jpg'],
[true, 'jpeg'],
[true, 'image/jpg'],
[true, 'image/jpeg'],
[true, Format::WEBP],
[true, MediaType::IMAGE_WEBP],
[true, MediaType::IMAGE_X_WEBP],
[true, FileExtension::WEBP],
[true, 'webp'],
[true, 'image/webp'],
[true, 'image/x-webp'],
[true, Format::GIF],
[true, MediaType::IMAGE_GIF],
[true, FileExtension::GIF],
[true, 'gif'],
[true, 'image/gif'],
[true, Format::PNG],
[true, MediaType::IMAGE_PNG],
[true, MediaType::IMAGE_X_PNG],
[true, FileExtension::PNG],
[true, 'png'],
[true, 'image/png'],
[true, 'image/x-png'],
[true, Format::AVIF],
[true, MediaType::IMAGE_AVIF],
[true, MediaType::IMAGE_X_AVIF],
[true, FileExtension::AVIF],
[true, 'avif'],
[true, 'image/avif'],
[true, 'image/x-avif'],
[true, Format::BMP],
[true, FileExtension::BMP],
[true, MediaType::IMAGE_BMP],
[true, MediaType::IMAGE_MS_BMP],
[true, MediaType::IMAGE_X_BITMAP],
[true, MediaType::IMAGE_X_BMP],
[true, MediaType::IMAGE_X_MS_BMP],
[true, MediaType::IMAGE_X_WINDOWS_BMP],
[true, MediaType::IMAGE_X_WIN_BITMAP],
[true, MediaType::IMAGE_X_XBITMAP],
[true, 'bmp'],
[true, 'image/bmp'],
[true, 'image/ms-bmp'],
[true, 'image/x-bitmap'],
[true, 'image/x-bmp'],
[true, 'image/x-ms-bmp'],
[true, 'image/x-windows-bmp'],
[true, 'image/x-win-bitmap'],
[true, 'image/x-xbitmap'],
[true, Format::TIFF],
[true, MediaType::IMAGE_TIFF],
[true, FileExtension::TIFF],
[true, FileExtension::TIF],
[true, 'tif'],
[true, 'tiff'],
[true, 'image/tiff'],
[true, Format::JP2],
[true, MediaType::IMAGE_JP2],
[true, MediaType::IMAGE_JPX],
[true, MediaType::IMAGE_JPM],
[true, FileExtension::TIFF],
[true, FileExtension::TIF],
[true, FileExtension::JP2],
[true, FileExtension::J2K],
[true, FileExtension::JPF],
[true, FileExtension::JPM],
[true, FileExtension::JPG2],
[true, FileExtension::J2C],
[true, FileExtension::JPC],
[true, FileExtension::JPX],
[true, 'jp2'],
[true, 'j2k'],
[true, 'jpf'],
[true, 'jpm'],
[true, 'jpg2'],
[true, 'j2c'],
[true, 'jpc'],
[true, 'jpx'],
[true, Format::HEIC],
[true, MediaType::IMAGE_HEIC],
[true, MediaType::IMAGE_HEIF],
[true, FileExtension::HEIC],
[true, FileExtension::HEIF],
[true, 'heic'],
[true, 'heif'],
[true, 'image/heic'],
[true, 'image/heif'],
[false, 'tga'],
[false, 'image/tga'],
[false, 'image/x-targa'],
[false, 'foo'],
[false, ''],
];
}
}