web/lib/Enums/ImageMimeType.php
2025-02-26 15:17:08 -06:00

53 lines
993 B
PHP

<?
namespace Enums;
use function Safe\mime_content_type;
enum ImageMimeType: string{
case JPG = 'image/jpeg';
case BMP = 'image/bmp';
case PNG = 'image/png';
case TIFF = 'image/tiff';
public function GetFileExtension(): string{
return match($this){
self::JPG => '.jpg',
self::BMP => '.bmp',
self::PNG => '.png',
self::TIFF => '.tif',
};
}
public static function FromFile(?string $path): ?ImageMimeType{
if($path === null || $path == ''){
return null;
}
try{
$mimeType = mime_content_type($path);
}
catch(\Safe\Exceptions\FileinfoException){
return null;
}
$mimeType = match($mimeType){
'image/x-ms-bmp', 'image/x-bmp' => 'image/bmp',
default => $mimeType,
};
if(!$mimeType){
return null;
}
return ImageMimeType::tryFrom($mimeType);
}
/**
* @return array<string>
*/
public static function Values(): array{
return array_map(function(ImageMimeType $case){
return $case->value;
}, ImageMimeType::cases());
}
}