fix: Handle exceptions in image processing functions

- Catch exceptions when reading image content to prevent errors.
- Adjust image resizing dimensions for better display.
This commit is contained in:
Rico van Zelst
2024-03-28 10:34:16 +01:00
parent 5b55e21659
commit 998f386f20
3 changed files with 13 additions and 9 deletions

View File

@@ -13,16 +13,20 @@ function getRoleIcon($roleName): string
'Support' => 'gm-support.png',
];
return asset('img/'.$roleIcons[$roleName]);
return asset('img/' . $roleIcons[$roleName]);
}
function getAverageColorFromImageUrl($imageUrl): string
{
$imgManager = new ImageManager(new Driver());
$img = $imgManager->read(file_get_contents($imageUrl));
try {
$img = $imgManager->read(file_get_contents($imageUrl));
} catch (Exception $e) {
return '#904f2c';
}
$img->resize(24, 24);
$img->resize(32, 32);
$totalR = 0;
$totalG = 0;

View File

@@ -30,14 +30,14 @@ class ChampionController extends Controller
$threeDaysInSeconds = 60 * 60 * 24 * 3;
$sixMonthsInSeconds = 60 * 60 * 24 * 30 * 6;
$champion = Cache::remember('championShowCache'.$champion->slug, $threeDaysInSeconds, static fn () => $champion->load('streamers', 'skins', 'lanes'));
$champion = Cache::remember('championShowCache' . $champion->slug, $threeDaysInSeconds, static fn () => $champion->load('streamers', 'skins', 'lanes'));
$streamers = $champion->load('streamers')->streamers;
$splashColor = Cache::remember(
'championSplashColorCache'.$champion->slug,
'championSplashColorCache' . $champion->slug,
$sixMonthsInSeconds,
static fn () => getAverageColorFromImageUrl($champion->getChampionImageAttribute())
static fn () => getAverageColorFromImageUrl('https://wsrv.nl/?url=' . $champion->getChampionImageAttribute())
);
$champion->splash_color = $splashColor;

View File

@@ -55,15 +55,15 @@ class ChampionSkinController extends Controller
public function show(ChampionSkin $championSkin)
{
$skin = Cache::remember(
'championSkinShowCache'.$championSkin->slug,
'championSkinShowCache' . $championSkin->slug,
60 * 60 * 48,
static fn () => $championSkin->load('champion', 'chromas')
);
$splashColor = Cache::remember(
'championSkinSplashColorCache'.$championSkin->slug,
'championSkinSplashColorCache' . $championSkin->slug,
60 * 60 * 120,
static fn () => getAverageColorFromImageUrl($championSkin->getSkinImageAttribute())
getAverageColorFromImageUrl('https://wsrv.nl/?url=' . $championSkin->getSkinImageAttribute())
);
$skin->splash_color = $splashColor;