未经实测,可以参考:
1.安装两个插件
2. 修改config\filesystem.php文件
// 配置文件上传
'filesystem' => [
'default' => 'local',
'disks' => [
'local' => [
'type' => 'local',
'root' => app()->getRootPath() . 'public/uploads',
'url' => '/uploads/',
'visibility' => 'public',
],
],
],
// 配置图片处理
'image' => [
'driver' => 'imagick', // 或者gd
'watermark' => 'watermark.png', // 水印图片路径
],
3.使用这两个插件来实现上传图片、生成缩略图、加水印等功能
use think\Image;
use think\facade\Filesystem;
// 上传文件
$path = Filesystem::disk('local')->putFile('images', $file);
// 生成缩略图
$thumbnailPath = 'images/thumbnail.jpg';
Image::open($file->getRealPath())->thumb(100, 100)->save($thumbnailPath);
// 加水印
$watermarkPath = 'images/watermark.jpg';
Image::open($file->getRealPath())->water($watermarkPath, Image::WATER_SOUTHEAST)->save($watermarkPath);
需要注意的是,生成缩略图和加水印的操作都是在本地进行的,如果需要在分布式环境下使用,可以使用其他的存储驱动,例如阿里云OSS、七牛云等,详细使用方法可以参考topthink/think-filesystem的文档。