Thinkphp5学习(35)图像处理

学习内容:
https://www.kancloud.cn/tpshop/thinkphp5/233345

完全开发手册:
https://www.kancloud.cn/manual/thinkphp5/177530

教程中的代码:https://github.com/phpervip/tp5a

代码示例:

<?php
namespace app\index\controller;
use think\Controller;
use think\Request;
use think\Image;
class Upload extends Controller
{
 public function picture(Request $request){
        $file = $request->file('image');
        if(true !== $this->validate(['image'=>$file],['image'=>'require|image'])){
                $this->error('请选择图像文件');
        }else{
                // var_dump($request);exit;
                $image = Image::open($file);
                switch($request->param('type')){
                    case 1:// 图片裁剪
                        $image->crop(300,300);
                        break;
                    case 2:// 缩略图
                      $image->thumb(60,60,Image::THUMB_CENTER);
                        break;
                    case 3:// 垂直翻转
                        $image->flip();
                        break;
                    case 4:// 水平翻转
                        $image->flip(Image::FLIP_Y);
                        break;
                    case 5:// 图片旋转
                        $image->rotate(30);
                        break;
                    case 6:// 图片水印
                        $image->water('./uploads/20170724/logo_v2.png',Image::WATER_NORTHWEST,50);
                        break;
                    case 7:// 文字水印
                        $image->text('THINKPHP',VENDOR_PATH.'topthink/think-captcha/assets/ttfs/1.ttf',20,'#ffffff');
                        break;
                }
                $saveName = $request->time().'.png';
                $image->save(ROOT_PATH.'public/uploads/'.$saveName);
                $this->success('图像处理完毕...','/uploads/'.$saveName,1);
        }
    }
}

模板文件:
注意:测试时,应找一张不对称的图片,更好的看到效果。
例:
这里写图片描述

<h2>图像上传和处理示例</h2>
<FORM method="post" enctype="multipart/form-data" class="form" action="{:url('picture')}">
    选择图像文件:<INPUT type="file" class="file" name="image"><br/>
    选择处理类型:<SELECT name="type">
                    <option value="1" selected>图片裁剪
                    <option value="2">生成缩略图
                    <option value="3">垂直翻转
                    <option value="4">水平翻转
                    <option value="5">图片翻转
                    <option value="6">添加图片水印
                    <option value="7">添加文字水印
                </SELECT>
    <INPUT type="submit" class="btn" value=" 提交 ">
</FORM>

<div class="copyright">
    <a title="官方网站" href="http://www.thinkphp.cn">ThinkPHP</a>
    <span>V5</span>
    <span>{ 十年磨一剑-为API开发设计的高性能框架 }</span>
</div>

图片裁剪

图片剪裁使用crop方法,用法:

crop(剪裁宽度,剪裁高度,X坐标(默认0),Y坐标(默认0))

示例中图片剪裁的主要代码为

$image->crop(300, 300);

生成缩略图

生成图片缩略图使用thumb方法,用法:

thumb(最大宽度,最大高度,裁剪类型)

缩略图剪裁类型包括如下:

剪裁类型(常量=值)描述
Image::THUMB_SCALING = 1等比例缩放(默认类型)
Image::THUMB_FILLED = 2缩放后填充
Image::THUMB_CENTER = 3 居中裁居中裁剪
Image::THUMB_NORTHWEST = 4左上角裁剪
Image::THUMB_SOUTHEAST = 5右下角裁剪
Image::THUMB_FIXED = 6固定尺寸缩放

图像翻转

图片翻转使用flip方法,用法如下:

flip(翻转方式)
翻转方式 常量值
垂直翻转 Image::FLIP_X=1
水平翻转 Image::FLIP_Y=2
图片旋转

图片翻转使用rotate方法,用法如下:

rotate(顺时针旋转的度数)
添加水印

使用water方法添加图片水印

water(水印图片,水印位置常量(默认右下角),水印透明度(默认100))

水印位置常量如下:

水印位置常量值
左上角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

示例代码:

$image->water(‘./logo.png’, Image::WATER_NORTHWEST, 50);

文字水印

使用text方法给图片添加文字(水印)

text(水印文字,字体文件路径,文字大小,文字颜色,文字写入位置,偏移量,文字倾斜角度)
图片保存

前面所有的操作都是对图片进行相关的处理,最后一步就是需要把处理过的图片文件保存下来。
这就需要调用save方法进行图片的保存操作

save(保存文件名,图像类型,图像质量,隔行扫描)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值