ThinkPHP5开发连载八十三纸扩展库之图像处理

上一篇文章讲解“扩展库-验证码”,本篇文章讲解“扩展库-图像处理”。

图像处理

使用图像处理,首先使用Composer安装ThinkPHP5的图像处理类库think-image:

切换到项目目录下,使用composer安装think-captcha扩展包:

安装后的think-image扩展包的位置:

下面来看下图像操作类的基础方法。

1. 打开图像文件

假设当前入口文件目录下的static文件夹下的image文件下里有一个1.png文件:

使用open方法打开图像文件进行相关操作:

新建Index控制器,并新建index方法,在方法中使用open方法打开图像

也可以从直接获取当前请求中的文件上传对象,例如:

2. 获取图像信息

可以获取打开图片的信息,包括图像大小、类型等。

修改index方法,获取打开图片的信息

预览:

3. 剪裁图片

使用crop和save方法完成裁剪图片功能。

1)从左上角开始剪裁

在Index控制器中,新建clip方法,并在方法中剪裁图片:

访问clip方法,并查看剪裁后保存的图片:

2)从某个坐标开始剪裁

支持从某个坐标开始裁剪。

修改Index控制器下的clip方法,从某个坐标开始剪裁:

访问clip方法,并查看剪裁后保存的图片:

4. 生成缩略图

1)使用thumb方法生成缩略图。

在Index控制器中,新建thumbnail方法,并在方法中生成缩略图

访问thumbnail方法,并查看生成缩略图后保存的图片:

注意:

1. 当设置生成的缩略图为100*100时,实际生成的缩略图并不是100*100,因为默认采用原图等比例缩放的方式生成缩略图,最大宽度或高度是100。

2)其他类型的缩略图生成

支持其他类型的缩略图生成,设置包括\think\Image的下列常量或者对应的数字:

修改Index控制器下的thumbnail方法,生成其他类型的缩略图:

访问后,保存的图片预览:

注意:

1. 其他类型可自行学习。

5. 图像翻转

使用flip可以对图像进行翻转操作,默认是以x轴进行翻转。

1)以x轴翻转

在Index控制器中,新建rollover方法,并在方法中进行图片翻转:

访问后,预览保存的图片:

2)以y轴翻转

我们也可以改变参数,以y轴进行翻转。

修改Index控制器下的rollover方法,以y轴进行翻转图片:

访问后,预览保存的图片:

注意:

1. 图像的翻转可以理解为图像的镜面效果与图像旋转有所不同。

6. 图像旋转

使用rotate可以对图像进行旋转操作(默认是顺时针旋转90度)。

在Index控制器中,新建rotation方法,并对图片进行旋转:

访问后,预览保存的图片:

注意:

1. 图片旋转时,将要旋转的度数传到rotate方法中,不传时,默认为顺时针90度旋转。

7. 图像保存参数

save方法可以配置的参数:

在Index控制器中,新建saveParam方法:

访问后,预览保存的图片:

注意:

1. 设置隔行扫描的情况下在网页进行浏览时。是从上到下一行一行的显示,否则图片整个显示出来 然后由模糊到清晰显示。

8. 添加水印——图片水印

系统支持添加图片及文字水印,下面依次举例说明

1)添加默认的图片水印

找一张作为水印的图片,保存到相应的项目目录下:

在Index控制器中,新建watermark方法,为图片添加图片水印:

访问后,预览保存的图片:

2)水印位置

water方法的第二个参数表示水印的位置,默认值是WATER_SOUTHEAST,可以传入下列\think\Image类的常量或者对应的数字:

修改Index控制器下的watermark方法,给图片添加一个居中水印:

访问后,预览保存的图片:

3)水印图片的透明度

还支持水印图片的透明度(0~100,默认值是100)。

修改Index控制器下的watermark方法,给图片添加水印,并设置透明度:

访问后,预览保存的图片:

9. 添加水印——文字水印

支持给图片添加文字水印,文字水印需要有文字的字体。

在public/static/文件夹下新建ttf文件夹,将字体文件放到此文件夹中:

在Index控制器中,新建twatermark方法,为图片添加文字水印

访问后,预览保存的图片:

文字水印参数:

文字水印比较多,在此只做说明不做演示了,可自行了解。

ThinkPHP5连载为卓象程序员原创,转载请联系卓象程序员

关注卓象程序员,定期发布技术文章

下一篇讲解“扩展库 - Time”

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181024A0NT6500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券