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; }