From b3f458795ad074aaa6e996a87c87bea5c3aaf202 Mon Sep 17 00:00:00 2001 From: augushong Date: Sun, 18 Feb 2024 15:58:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=B0=B4=E5=8D=B0=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/tools/Image.php | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/app/common/tools/Image.php b/app/common/tools/Image.php index 9825741..f3dafc6 100644 --- a/app/common/tools/Image.php +++ b/app/common/tools/Image.php @@ -2,6 +2,8 @@ namespace app\common\tools; +use Intervention\Image\Exception\NotReadableException; +use Intervention\Image\Exception\NotSupportedException; use Intervention\Image\Image as ImageImage; use Intervention\Image\ImageManagerStatic; use SplFileInfo; @@ -9,16 +11,15 @@ use think\facade\App; class Image { - public static function addWatermark(SplFileInfo $file, $watermark_str = 'phpreturn.com'):ImageImage + public static function addWatermark(SplFileInfo $file, $watermark_str = 'phpreturn.com'):ImageImage|bool { - // 检查文件是否是图片 - if (!in_array($file->getExtension(), ['jpg', 'jpeg', 'png', 'gif'])) { - return false; - } - ImageManagerStatic::configure(['driver' => 'imagick']); - $img = ImageManagerStatic::make($file->getPathname()); + try { + $img = ImageManagerStatic::make($file->getPathname()); + } catch (NotReadableException|NotSupportedException $th) { + return false; + } $font_size = 20; @@ -58,6 +59,9 @@ class Image $watermarked_file_save_name = '/upload/watermark/' . $src_md5 . '.' . $src_file->getExtension(); } + // 如果以jpe结尾,转换为jpg + $watermarked_file_save_name = str_replace('.jpe', '.jpg', $watermarked_file_save_name); + $watermarked_file = App::getRootPath() . '/public' . $watermarked_file_save_name; if (file_exists($watermarked_file)) { @@ -68,7 +72,14 @@ class Image mkdir(dirname($watermarked_file), 0777, true); } - static::addWatermark($src_file, $watermark_text)->save($watermarked_file); + $img = static::addWatermark($src_file, $watermark_text); + + if ($img) { + $img->save($watermarked_file); + } else { + // 把图片复制到新的位置 + copy($src, $watermarked_file); + } return $watermarked_file_save_name; }