Thinkphp图片水印和文字水印
web ThinkPHP 2018-07-26 2285 0
关于本站

“最难不过坚持”

本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作

有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339

6457592 2613 39
最新评论
https://jueru.net/
评 留言
:weixiao:
评 留言
:shuijiao: :weiqu: :zhenbang: :leng:
评 留言
:yiwen: :yiwen: :yiwen: :yiwen:
评 EasySass: could not generate CSS file. See Output panel for details.
这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
评 TP6模型事件-查询后onAfterRead不好用
文章标签更多
ThinkPHP (254)
Mysql (58)
DedeCms (33)
jQuery (67)
证件照 (1)
setInc (4)
setDec (4)
onclick (5)
打开边栏(ESC) 关闭边栏(ESC)
1.Thinkphp图像处理
1.1图片处理类和库
首先,在Thinkphp\Think\Image类中有图像处理功能,支持Gd库和Imagick库,包括对GIf图像处理的支持。

1.2实例化类库

$image = new \Think\Image(); 
实例化image后,默认使用GD库进行图像操作,如果需要使用Imagick库操作的话,需要把实例化写成:
$image = new \Think\Image(\Think\Image::IMAGE_IMAGICK); 
// 或者采用
$image = new \Think\Image('Imagick');
如果对GD库或者imageick库不了解,可以参考http://php.net/manual/zh/book.image.php,对GD库和imageick库有详细的讲解,而且是中文版的,特别通俗易懂!

1.3打开图片资源
如果我们要对图像进行处理,第一步,必须先打开图像资源:
使用open方法打开图像文件进行相关操作:

$image = new \Think\Image(); 
$image->open('./1.jpg');        //指向要打开的图片资源
在图片上传中,把open路径指向要打开的上传文件,然后进行对该图片的处理。

1.4获取图像信息
在open图像文件以后,我们要获取图像的信息:

$image = new \Think\Image(); 
$image->open($file);//路径指向你上传的图片
$width = $image->width(); // 返回图片的宽度
$height = $image->height(); // 返回图片的高度
$type = $image->type(); // 返回图片的类型
$mime = $image->mime(); // 返回图片的mime类型
$size = $image->size(); // 返回图片的尺寸数组 0 图片宽度 1 图片高度
这样我们可以获取图片的信息,接下里可以把图片的一些信息保存在数据库或者继续对图像进行处理。

1.5添加图片水印
接下来我们就可以对我们上传的图片添加水印

$image = new \Think\Image(); 
// 在图片左上角添加水印(水印文件位于./logo.png) 并保存为water.jpg
$image->open('./1.jpg')->water('./logo.png',\Think\Image::IMAGE_WATER_CENTER)->save("water.jpg");
如图,就是把logo.png水印到1.jpg的5(居中)的位置上

from clipboard

图片水印的位置,是根据下面的代码确定的,我们想吧图片水印在哪里,可以根据自己的需求改变

IMAGE_WATER_NORTHWEST =   1 ; //左上角水印
IMAGE_WATER_NORTH     =   2 ; //上居中水印
IMAGE_WATER_NORTHEAST =   3 ; //右上角水印
IMAGE_WATER_WEST      =   4 ; //左居中水印
IMAGE_WATER_CENTER    =   5 ; //居中水印
IMAGE_WATER_EAST      =   6 ; //右居中水印
IMAGE_WATER_SOUTHWEST =   7 ; //左下角水印
IMAGE_WATER_SOUTH     =   8 ; //下居中水印
IMAGE_WATER_SOUTHEAST =   9 ; //右下角水印
还可以支持水印图片的透明度(0~100,默认值是80)
$image = new \Think\Image(); 
// 在图片左上角添加水印(水印文件位于./logo.png) 水印图片的透明度为50 并保存为water.jpg
$image->open('./1.jpg')->water('./logo.png',\Think\Image::IMAGE_WATER_NORTHWEST,80)->save("water.jpg"); 
1.6给图片添加文字水印
$image = new \Think\Image(); 
// 在图片右下角添加水印文字 ThinkPHP 并保存为new.jpg
$image->open('./1.jpg')->text('www.THZ.CN','./1.ttf',20,'#000000',\Think\Image::IMAGE_WATER_SOUTHEAST)->save("new.jpg"); 
参数详解:text('要水印的文字',字体,字体大小,字体颜色,'文字要水印的位置');
效果图:
from clipboard

在这里,制作的时候会出现水印文字乱码的问题:
解决方案:
1.出现乱码或者出现框框,是因为你所选用字体的原因,有些字体不支持中文,当我们要水印中文的时候会出现乱码问题,这个时候,我们要去下载支持中文的字体,例如:微软雅黑,宋体……
2.大部分的字体都支持英文,所以我们水印的时候要尽量水印英文字母吧,这样不容易出错。
3.我们要想水印一些奇怪的字,比如韩语,日本语……,我们需要去下载对应的字体。
4.如果我们的字体只用于windows,我们可以到C:\Windows\Fonts中选取我们要用的字体(不是很推荐,我们要想用,去下载最新的字体,比较全面,而且支持生成的字比较多)。

版权声明:本篇文章来源于网络。 来源链接

相关推荐
ThinkPHP 3.2.3 Runtime\Logs日志文件太多怎么关闭日志功能
ThinkPHP | 2019-11-05 6833
'LOG_RECORD' => false, // 默认不记录日志 'LOG_TYPE' => 'File', // 日志记录类型 默认为文件方式 'LOG_LEVEL' => 'EMERG,ALERT,CRIT,ERR',// 允许记录的...
ThinkPHP3.2.3打印sql语句
ThinkPHP | 2018-12-29 5426
方法一 echo M()->getLastSql(); 方法二 echo M()->_sql();
评论:0条
评论加载中...
发表评论