ThinkPHP图片处理之压缩图片大小,图片处理之图片水印(添加平铺文字水印,并设置文字之间的间距和文字的角度)

安装扩展

使用Composer安装图像处理类库

composer require topthink/think-image

在对应的控制器内引入Image

use think\Image;

图片处理之压缩图片大小

public function upload(){$file = request()->file('image');// 将前端传过来的图片移动到项目目录下$info = $file->move('./upload/mobile');if($info){$file_edit = $info->getInfo();// *我们这里通过图片的大小判断图片是否需要被压缩,当然数值可以更改为你需要的if($file_edit['size'] > 100000){// 大于100K的图片进行处理// 获取上传的图片,进行图片压缩$image = \think\Image::open($info);// 保存图片的路径处理$date = date('Ymd');$name = $info->getSavename();$url_edit = './upload/mobile/'.$name;// 保存// 默认会按比例保存,但是最大宽度、高度不超过thumb(400, 400)设定值$img_edit = $image->thumb(400, 400)->save($url_edit);$url = $name;}else{$url = $info->getSavename();}return $this->json_success('上传成功', $url);}else{// 上传失败获取错误信息return $this->json_error('上传失败');}     }

图片处理之图片水印

代码示例

public function add(){if ($this->request->isPost()) {$data     = $this->request->post();// 获取上传成功的图片路径$roth = './upload/'.$data['photo'];// 打开图片$image = \think\Image::open($roth);// 加图片水印,其中water.png是已经做好的水印图片放在根目录下$image->water('./water.png',\think\Image::WATER_NORTHWEST)->save($roth);}
}

效果预览

图片处理之图片水印

添加平铺文字水印,并设置文字之间的间距和文字的角度

代码示例

调用代码示例

public function test(){$image = Image::open('bg.jpg');//1.文字 2字体路径 3文字大小 4 文字颜色(#00000000)后面两位数可以控制文字的透明度  //5.文字的倾斜角度 6.x轴间距 7.y轴间距  注意字体路径是否正确$image>tiletext($text,'simkai.ttf',15,#ffffff,50,100,50)->save('look.jpg');
}

打开第三方类库文件:vendor\topthink\think-image\src\Image.php,把下面代码复制到上方地址的图片处理类库中(增加一个图片处理方法)

/*** 图像添平铺文字 带角度** @param  string  $text   添加的文字* @param  string  $font   字体路径* @param  integer $size   字号* @param  string  $color  文字颜色* @param  integer $angle  文字倾斜角度* @param  int     $cx     x方向间距* @param  int     $cy     y方向间距* @return $this* @throws ImageException*/public function tiletext($text, $font, $size, $color = '#00000000', $angle = 0 ,$cx = 10,$cy=10) {if (!is_file($font)) {throw new ImageException("不存在的字体文件:{$font}");}//获取文字信息$info = imagettfbbox($size, $angle, $font, $text);/* 设置颜色 */if (is_string($color) && 0 === strpos($color, '#')) {$color = str_split(substr($color, 1), 2);$color = array_map('hexdec', $color);if (empty($color[3]) || $color[3] > 127) {$color[3] = 0;}} elseif (!is_array($color)) {throw new ImageException('错误的颜色值');}do {//循环平铺水印 $this->info['width']是被处理图片的宽度for ($x = 0; $x < $this->info['width']; $x) {for ($y = 10; $y < $this->info['height']; $y) {$col = imagecolorallocatealpha($this->im, $color[0], $color[1], $color[2], $color[3]);imagettftext($this->im, $size, $angle, $x, $y, $col, $font, $text);$y += $cy;}$x += $cx;}} while (!empty($this->gif) && $this->gifNext());return $this;}

效果预览

添加平铺文字水印,并设置文字之间的间距和文字的角度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/169161.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL 技术内幕(十一)位图扫描

扫描算子在上层计算和底层存储之间&#xff0c;向下扫描底层存储的数据&#xff0c;向上作为计算的输入源&#xff0c;在SQL的执行层中&#xff0c;起着关键的作用。顺序、索引、位图等不同类型的扫描算子适配不同的数据分布场景。然而&#xff0c;扫描算子背后的实现原理是怎样…

分布式理论基础:CAP定理

什么是CAP CAP原则又称CAP定理&#xff0c;指的是在一个分布式系统中&#xff0c;Consistency&#xff08;一致性&#xff09;、 Availability&#xff08;可用性&#xff09;、Partition tolerance&#xff08;分区容错性&#xff09;这三个基本需求&#xff0c;最多只能同时…

【数据结构】:红黑树

1、红黑树的简介 红黑树&#xff08;Red Black Tree&#xff09; 是一种自平衡二叉查找树&#xff0c;是在计算机科学中用到的一种数据结构。 红黑树是在1972年由Rudolf Bayer发明的&#xff0c;当时被称为平衡二叉B树&#xff08;symmetric binary B-trees&#xff09;。后来…

共话医疗数据安全,美创科技@2023南湖HIT论坛,11月11日见

11月11日浙江嘉兴 2023南湖HIT论坛 如约而来 深入数据驱动运营管理、运营数据中心建设、数据治理和数据安全、数据资产“入表”等热点、前沿话题 医疗数据安全、数字化转型深耕者—— 美创科技再次深入参与 全新发布&#xff1a;医疗数据安全白皮书 深度探讨&#xff1a;数字…

【Axure高保真原型】树切换动态面板案例

今天和大家分享树切换动态面板的原型模板&#xff0c;点击树的箭头可以打开或者收起子节点&#xff0c;点击最后一级人物节点&#xff0c;可以切换右侧面板的状态到对应的页面&#xff0c;左侧的树是通过中继器制作的&#xff0c;使用简单&#xff0c;只需要按要求填写中继器表…

CSS注入的四种实现方式

目录 CSS注入窃取标签属性数据 简单的一个实验&#xff1a; 解决hidden 方法1&#xff1a;jsnode.js实现 侧信道攻击 方法2&#xff1a;对比波兰研究院的方案 使用兄弟选择器 方法3&#xff1a;jswebsocket实现CSS注入 实验实现&#xff1a; 方法4&#xff1a;window…

Qt——连接mysql增删查改(仓库管理极简版)

目录 UI布局设计 .pro文件 mainwindow.h main.cpp UI布局设计 .pro文件 QT core gui QT core gui sql QT sqlgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any …

MySQL的索引和复合索引

由于MySQL自动将主键加入到二级索引&#xff08;自行建立的index&#xff09;里&#xff0c;所以当select的是主键或二级索引就会很快&#xff0c;select *就会慢。因为有些列是没在索引里的 假设CA有1kw人咋整&#xff0c;那我这个索引只起了前一半作用。 所以用复合索引&am…

腾讯云3年期轻量应用服务器优惠(薅羊毛教程)

腾讯云轻量应用服务器特价是有新用户限制的&#xff0c;所以阿腾云建议大家选择3年期轻量应用服务器&#xff0c;一劳永逸&#xff0c;免去续费困扰。腾讯云轻量应用服务器3年优惠可以选择2核2G4M和2核4G5M带宽&#xff0c;3年轻量2核2G4M服务器540元&#xff0c;2核4G5M轻量应…

2023年A股借壳上市研究报告

第一章 借壳上市概况 1.1 定义 借壳上市作为一种独特的资本市场操作手法&#xff0c;历来是企业拓展融资渠道和实现市场战略目标的重要途径。具体来说&#xff0c;借壳上市可分为狭义与广义两种模式。在狭义的定义下&#xff0c;借壳上市是指一家已上市的公司的控股母公司&am…

YOLO目标检测——水果检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;水果分类检测数据集的应用场景主要包括农贸市场监管、水果品质检测、超市零售管理等数据集说明&#xff1a;水果分类检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;含有苹果香蕉橙子图片标签说明&#xff1a;使…

Leetcode—2471.逐层排序二叉树所需的最少操作数目【中等】(置换环解法!)

2023每日刷题&#xff08;二十七&#xff09; Leetcode—2471.逐层排序二叉树所需的最少操作数目 置换环解题思想 参考自网络 总交换次数 每一层最小交换次数之和 每一层元素个数 - 置换环数 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* …