Thinkphp5学习(35)图像处理

来源:互联网 发布:石家庄手机数据恢复 编辑:程序博客网 时间:2024/05/18 13:24

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

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

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

代码示例:

<?phpnamespace 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(保存文件名,图像类型,图像质量,隔行扫描)

原创粉丝点击