Tp5.1 图片处理:缩略图+水印(换行显示)
- 一、说明
- 二、步骤
- 1、composer 安装扩展
- 2、使用的方法参数说明
- 3、下载一个ttf字体文件
- 4、PHP代码
一、说明
图片不存oss,直接存到项目中;有些大图片占内存,需要压缩一下,并打水印。
文档 ThinkPHP5.1完全开发手册:扩展库 》图像处理
思维扩展:原图不存吗,缩略图不存吗(如果以后要把水印改成其他的,没了原图怎么改)PHP怎么去除图片水印。
二、步骤
1、composer 安装扩展
composer require topthink/think-image
2、使用的方法参数说明
- save() 方法参数说明
参数 | 默认 | 描述 |
---|---|---|
pathname | 必填项 | 图像保存路径名称 |
type | 默认与原图相同 | 图像类型 |
quality | 80 | 图像质量 |
interlace | true | 是否对JPEG类型图像设置隔行扫描 |
- text() 方法参数说明
参数 | 默认 | 描述 |
---|---|---|
text | 不能为空 | 添加的文字 |
font | 不能为空 | 字体文件路径 |
size | 不能为空 | 字号,单位是像素 |
color | #00000000 | 文字颜色 |
locate | WATER_SOUTHEAST | 文字写入位置 |
offset | 0 | 文字相对当前位置的偏移量 |
angle | 0 | 文字倾斜角度 |
3、下载一个ttf字体文件
- text() 方法的第二个参数需要字体文件ttf路径,我们需要找一个文件,放在项目中,读取字体文件。
- 我这里找了一个
AlibabaPuHuiTi-2-35-Thin.ttf
链接:https://pan.baidu.com/s/1_20CB78kG_vzIZhZwp9dGA 提取码:0h1i
- 或者电脑中自己找一个,路径为:
C:\Windows\Fonts
4、PHP代码
- 控制器代码
// 单图上传public function image() {$files = array_keys(request()->file());$file = request()->file($files[0]);return self::inputResult($this->service->thumbImage($file, "水印的具体内容 \n\r2122-09-13 12:11:23"));}
- 逻辑层代码
/*** 图片转缩略图,加水印,存在本地* @param $file 文件* @param $text 水印内容* @return mixed* @throws BaseException*/function thumbImage($file, $text) {// 移动到项目根目录/public/uploads/ 目录下$info = $file->validate(['ext' => 'jpg,png,gif,jpeg'])->move('uploads');if ($info) {$rootPath = Env::get('root_path') . 'public'; //项目入口目录$fileName = str_replace('\\','/',$info->getSaveName()); //文件名$relatePath = '/uploads/' . $fileName; //相对路径(包含文件名):用于存数据表$savePath = $rootPath . $relatePath; //完全路径(包含文件名):用于操作文件的保存,删除,移动等$ext = $info->getExtension(); //文件后缀
// $size = byte_format($info->getSize(),2); //文件大小$thumbFilename = date('His') . str_pad(mt_rand(1, 999999), 6, 0, STR_PAD_LEFT) . '.' . $ext;$thumbRelateDir = '/uploads/' . date('Ymd') . '_thumb/'; //缩略图相对路径(不包含文件名)$thumbRelatePath = $thumbRelateDir . $thumbFilename; //缩略图相对路径(包含文件名):用于存数据表$thumbSaveDir = $rootPath . $thumbRelateDir; //缩略图绝对路径(不包含文件名)$thumbSavePath = $thumbSaveDir . $thumbFilename; //缩略图绝对路径(包含文件名):用于操作文件的保存,删除,移动等//尝试递归创建文件if (!file_exists($thumbSaveDir)) {mkdir ( $thumbSaveDir , 0777, true);chmod($thumbSaveDir, 0777);}//注意编写顺序:先缩略,再打水印$image = Image::open($savePath);$image->thumb(800, 800)->text($text, $rootPath . '/data/AlibabaPuHuiTi-2-35-Thin.ttf', 15, '#ffffff', 9, -12)->save($thumbSavePath);// unlink(str_replace('\\','/', $savePath)); //原图删除操作$result = ['origin_path' => $relatePath, //原图相对路径'thumb_path' => $thumbRelatePath //缩略水印图相对路径];return $result;} else {throw new BaseException($file->getError());}}
Tp5.1 图片处理:缩略图+水印(换行显示)相关推荐
- GIthub创建文件夹、跳转链接、Read.me添加图片和换行显示等操作
有些小伙伴在GitHub创建一个仓库,想在仓库的文件夹下创建一个跳转链接,比如点击一个题目就跳转到微信公众号链接,那具体怎么操作呢?且听我慢慢道来~ 其实在GitHub上Read.me创建链接就相当于 ...
- 给图片添加文字(换行)水印
Android给图片添加半透明背景的水印 (水印带有半透明底色) 给图片添加文字(换行)水印 1.绘制富文本: /** * 绘制富文本* StaticLayout可实现换行* <p>* h ...
- php 文字水印换行,thinkPHP5图片加文字水印实现换行的方法
原有的添加文字的代码: Image::open(ROOT_PATH . "1.jpg") ->text("斯巴奴男装狐狸毛领中长款加厚asdasdsadasdasd ...
- win7系统不显示图片的缩略图的终极解决方法
win7系统不显示图片的缩略图的终极解决方法 参考文章: (1)win7系统不显示图片的缩略图的终极解决方法 (2)https://www.cnblogs.com/senior-engineer/p/ ...
- [转]如何解决Windows图片预览窗口无法显示图片缩略图
问:我的电脑中安装的是Windows 2000,最近发现文件夹的图片预览功能不能使用了,也就是说图片预览窗口无法显示图片缩略图了,在该位置上只有文件的图标.请问这是 ...
- 【经验】为什么Android手机连接USB后查看手机内部图片有些有缩略图,有些显示图标?
[经验]为什么Android手机连接USB后查看手机内部图片有些有缩略图,有些显示图标? 一.图片内嵌缩略图原理 这是什么原理呢?因为现在JPEG的文件采用了压缩的方式,其过程比较复杂.为了能让大家快 ...
- TP5框架的多图片上传返回不显示问题
TP5框架的多图片上传返回不显示问题 今天在写接口的时候遇到了一个问题,就是前端多张图片上传,图片路径以 ' | '进行的拼接然后存储, 大概就是这个样子在jpg后面进行的一个 ' | ' 进行分割 ...
- php 怎么支持中文图片显示,利用php怎么实现一个给图片添加中文水印的功能
利用php怎么实现一个给图片添加中文水印的功能 发布时间:2021-01-21 15:13:48 来源:亿速云 阅读:88 作者:Leah 这篇文章给大家介绍利用php怎么实现一个给图片添加中文水印的 ...
- 如何让电脑显示SVG图片的缩略图
如何让电脑显示SVG图片的缩略图 工具/原料 SVG图形文件的缩略图补丁程序 方法/步骤 1 默认电脑是无法查看SVG图形文件的缩略图. 2 安装SVG图形文件的缩略图补丁,运行dssee_setup ...
- php中图片文件上传,显示缩略图
php中图片文件上传,显示缩略图 htm代码块: <meta charset="utf-8" /> <style>img {max-width: 100px ...
最新文章
- 用g ++编译C ++ 11
- jQuery 第二章
- php取汉字第一个字,php---------取汉字的第一个字的首字母
- J2EE互联网产品打造
- UEditor添加自定义弹窗 插入音频地址
- 天勤数据结构:树与二叉树(图解二叉树的三种遍历方式执行流程,超详细)
- python执行过程打印,如何在pytest运行过程中看到正常的打印输出?
- 【华为云技术分享】测试微课堂 | 有的放矢制定测试计划
- 【matlab】笔记_1
- MySQL数据库设计-案例
- 调用DB2存储过程出现错误
- 手机驱动工程师门,准备转行了吗
- 分析方法选讲期末复习脉络图---完结版
- 更新显卡驱动后,Windows重启卡在Logo页面
- 作物产量常用的单位换算公式
- 前端网页设计内容二《电商平台网站》
- 字节跳动教育业务怎么样_听说字节跳动教育线已经投入了不少,好像效果不咋样[笑哭]…...
- Webpack 4教程 - 第四部分,使用SplitChunksPlugin分离代码
- private vlan(私有vlan)
- 1分钟让别人喜欢你(三)
热门文章
- 营销管理手册_从店长手册入手,推动营销管理大升级
- C++与STL简单介绍( C/C++机试)
- 如何统计区域内部公路总长度和绘制数据直方图
- CNN LeNet-5 AlexNet VGG简介
- linux python测试程序,linux下测试python程序执行时间
- 【目标检测】mAP评价标准
- 放苗机器人_智能化种植系统所用苗盘摆收机器人的制作方法
- beanutils.copyproperties属性值丢失_数据质量 | 脏数据?缺失值、异常值和一致性分析?...
- python语言的变量随时_python的变量和简单的数据类型
- (四) Session管理 --《springboot与shiro整合》