'imagick']); try { $img = ImageManagerStatic::make($file->getPathname()); } catch (NotReadableException|NotSupportedException $th) { return false; } $font_size = 20; // 字体大小为宽度的 1/20 $font_size = $img->width() / 40; $font_size = ceil($font_size); $x = $img->width() - $font_size; $y = $img->height() - $font_size; $img->text($watermark_str, $x + $font_size * 0.05, $y + $font_size * 0.05, function ($font) use ($font_size) { $font->file(App::getRootPath() . '/source/font/SourceHanSans-Normal.otf'); $font->size($font_size); $font->color([0, 0, 0, 0.9]); $font->align('right'); $font->valign('bottom'); }); $img->text($watermark_str, $x, $y, function ($font) use ($font_size) { $font->file(App::getRootPath() . '/source/font/SourceHanSans-Normal.otf'); $font->size($font_size); $font->color([255, 255, 255, 0.9]); $font->align('right'); $font->valign('bottom'); }); return $img; } public static function handelWatermarkSave($src, $watermarked_file_save_name = null) { $src_file = new SplFileInfo($src); $watermark_text = get_system_config('watermark_text', 'phpreturn.com'); $src_md5 = md5($src . $watermark_text); if (!$watermarked_file_save_name) { $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)) { return $watermarked_file_save_name; } if (!is_dir(dirname($watermarked_file))) { mkdir(dirname($watermarked_file), 0777, true); } $img = static::addWatermark($src_file, $watermark_text); if ($img) { $img->save($watermarked_file); } else { // 把图片复制到新的位置 copy($src, $watermarked_file); } return $watermarked_file_save_name; } }