• 一、说明
  • 二、步骤
    • 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 图片处理:缩略图+水印(换行显示)相关推荐

  1. GIthub创建文件夹、跳转链接、Read.me添加图片和换行显示等操作

    有些小伙伴在GitHub创建一个仓库,想在仓库的文件夹下创建一个跳转链接,比如点击一个题目就跳转到微信公众号链接,那具体怎么操作呢?且听我慢慢道来~ 其实在GitHub上Read.me创建链接就相当于 ...

  2. 给图片添加文字(换行)水印

    Android给图片添加半透明背景的水印 (水印带有半透明底色) 给图片添加文字(换行)水印 1.绘制富文本: /** * 绘制富文本* StaticLayout可实现换行* <p>* h ...

  3. php 文字水印换行,thinkPHP5图片加文字水印实现换行的方法

    原有的添加文字的代码: Image::open(ROOT_PATH . "1.jpg") ->text("斯巴奴男装狐狸毛领中长款加厚asdasdsadasdasd ...

  4. win7系统不显示图片的缩略图的终极解决方法

    win7系统不显示图片的缩略图的终极解决方法 参考文章: (1)win7系统不显示图片的缩略图的终极解决方法 (2)https://www.cnblogs.com/senior-engineer/p/ ...

  5. [转]如何解决Windows图片预览窗口无法显示图片缩略图

    问:我的电脑中安装的是Windows                   2000,最近发现文件夹的图片预览功能不能使用了,也就是说图片预览窗口无法显示图片缩略图了,在该位置上只有文件的图标.请问这是 ...

  6. 【经验】为什么Android手机连接USB后查看手机内部图片有些有缩略图,有些显示图标?

    [经验]为什么Android手机连接USB后查看手机内部图片有些有缩略图,有些显示图标? 一.图片内嵌缩略图原理 这是什么原理呢?因为现在JPEG的文件采用了压缩的方式,其过程比较复杂.为了能让大家快 ...

  7. TP5框架的多图片上传返回不显示问题

    TP5框架的多图片上传返回不显示问题 今天在写接口的时候遇到了一个问题,就是前端多张图片上传,图片路径以 ' | '进行的拼接然后存储, 大概就是这个样子在jpg后面进行的一个 ' | ' 进行分割 ...

  8. php 怎么支持中文图片显示,利用php怎么实现一个给图片添加中文水印的功能

    利用php怎么实现一个给图片添加中文水印的功能 发布时间:2021-01-21 15:13:48 来源:亿速云 阅读:88 作者:Leah 这篇文章给大家介绍利用php怎么实现一个给图片添加中文水印的 ...

  9. 如何让电脑显示SVG图片的缩略图

    如何让电脑显示SVG图片的缩略图 工具/原料 SVG图形文件的缩略图补丁程序 方法/步骤 1 默认电脑是无法查看SVG图形文件的缩略图. 2 安装SVG图形文件的缩略图补丁,运行dssee_setup ...

  10. php中图片文件上传,显示缩略图

    php中图片文件上传,显示缩略图 htm代码块: <meta charset="utf-8" /> <style>img {max-width: 100px ...

最新文章

  1. 用g ++编译C ++ 11
  2. jQuery 第二章
  3. php取汉字第一个字,php---------取汉字的第一个字的首字母
  4. J2EE互联网产品打造
  5. UEditor添加自定义弹窗 插入音频地址
  6. 天勤数据结构:树与二叉树(图解二叉树的三种遍历方式执行流程,超详细)
  7. python执行过程打印,如何在pytest运行过程中看到正常的打印输出?
  8. 【华为云技术分享】测试微课堂 | 有的放矢制定测试计划
  9. 【matlab】笔记_1
  10. MySQL数据库设计-案例
  11. 调用DB2存储过程出现错误
  12. 手机驱动工程师门,准备转行了吗
  13. 分析方法选讲期末复习脉络图---完结版
  14. 更新显卡驱动后,Windows重启卡在Logo页面
  15. 作物产量常用的单位换算公式
  16. 前端网页设计内容二《电商平台网站》
  17. 字节跳动教育业务怎么样_听说字节跳动教育线已经投入了不少,好像效果不咋样[笑哭]…...
  18. Webpack 4教程 - 第四部分,使用SplitChunksPlugin分离代码
  19. private vlan(私有vlan)
  20. 1分钟让别人喜欢你(三)

热门文章

  1. 营销管理手册_从店长手册入手,推动营销管理大升级
  2. C++与STL简单介绍( C/C++机试)
  3. 如何统计区域内部公路总长度和绘制数据直方图
  4. CNN LeNet-5 AlexNet VGG简介
  5. linux python测试程序,linux下测试python程序执行时间
  6. 【目标检测】mAP评价标准
  7. 放苗机器人_智能化种植系统所用苗盘摆收机器人的制作方法
  8. beanutils.copyproperties属性值丢失_数据质量 | 脏数据?缺失值、异常值和一致性分析?...
  9. python语言的变量随时_python的变量和简单的数据类型
  10. (四) Session管理 --《springboot与shiro整合》