45 lines
970 B
PHP
45 lines
970 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Media;
|
|
|
|
use Intervention\Image\Constraint;
|
|
use Intervention\Image\ImageManager;
|
|
|
|
final class AlbumArt
|
|
{
|
|
public const IMAGE_WIDTH = 1500;
|
|
|
|
public static function resize(
|
|
string $rawArtworkString,
|
|
int $width = self::IMAGE_WIDTH,
|
|
int $height = self::IMAGE_WIDTH,
|
|
bool $upsize = false,
|
|
): string {
|
|
$newArtwork = self::getImageManager()->make($rawArtworkString);
|
|
$newArtwork->fit(
|
|
$width,
|
|
$height,
|
|
function (Constraint $constraint) use ($upsize) {
|
|
if (!$upsize) {
|
|
$constraint->upsize();
|
|
}
|
|
}
|
|
);
|
|
|
|
$newArtwork->encode('jpg');
|
|
|
|
return $newArtwork->getEncoded();
|
|
}
|
|
|
|
public static function getImageManager(): ImageManager
|
|
{
|
|
return new ImageManager(
|
|
[
|
|
'driver' => 'gd',
|
|
]
|
|
);
|
|
}
|
|
}
|