未经实测,可以参考:
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的文档。