From 3aa42e8055d169dd36a062a157d31750a1c6b804 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Wed, 13 Jul 2022 14:31:15 +0800 Subject: [PATCH] fixed for -- Unsupported image type image/vnd.microsoft.icon. GD driver is only able to decode JPG, PNG, GIF, BMP or WebP files. --- beike/Services/ImageService.php | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/beike/Services/ImageService.php b/beike/Services/ImageService.php index b484d8b8..1d24a987 100644 --- a/beike/Services/ImageService.php +++ b/beike/Services/ImageService.php @@ -12,6 +12,7 @@ namespace Beike\Services; use Intervention\Image\Facades\Image; +use Intervention\Image\Exception\NotReadableException; class ImageService { @@ -43,23 +44,27 @@ class ImageService */ public function resize(int $width = 100, int $height = 100): string { - $extension = pathinfo($this->imagePath, PATHINFO_EXTENSION); - $newImage = 'cache/' . mb_substr($this->image, 0, mb_strrpos($this->image, '.')) . '-' . $width . 'x' . $height . '.' . $extension; + try { + $extension = pathinfo($this->imagePath, PATHINFO_EXTENSION); + $newImage = 'cache/' . mb_substr($this->image, 0, mb_strrpos($this->image, '.')) . '-' . $width . 'x' . $height . '.' . $extension; - $newImagePath = public_path($newImage); - if (!is_file($newImagePath) || (filemtime($this->imagePath) > filemtime($newImagePath))) { - create_directories(dirname($newImage)); - $img = Image::make($this->imagePath); + $newImagePath = public_path($newImage); + if (!is_file($newImagePath) || (filemtime($this->imagePath) > filemtime($newImagePath))) { + create_directories(dirname($newImage)); + $img = Image::make($this->imagePath); - $img->resize($width, $height, function ($constraint) { - $constraint->aspectRatio(); - }); + $img->resize($width, $height, function ($constraint) { + $constraint->aspectRatio(); + }); - $canvas = Image::canvas($width, $height); - $canvas->insert($img, 'center'); - $canvas->save($newImagePath); + $canvas = Image::canvas($width, $height); + $canvas->insert($img, 'center'); + $canvas->save($newImagePath); + } + return asset($newImage); + } catch (NotReadableException $e) { + return $this->originUrl(); } - return asset($newImage); }