Thinkphp5 图像填充

自己项目写的

    $thumb_2 = \think\Image::open(request()->file('thumb'));    //从传过来获得
            
           // $thumb_2->thumb(400,180)->save('./thumb_2.png');

           $thumb_2->thumb(400,400);
            $saveName = 'logo'.request()->time() . '.png';
            $suolietu =request()->time();
           $thumb_2->save(ROOT_PATH . 'public/static/admin/uploads/suolietu/'.$saveName,null,10);
           $res = '/uploads/suolietu/'.$saveName;

           $data['thumb_2']=$res;

学习内容: 
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);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

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

<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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

图片裁剪

图片剪裁使用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(保存文件名,图像类型,图像质量,隔行扫描)

猜你喜欢

转载自blog.csdn.net/heyuqing32/article/details/81489874