站长家园(原代码之家)(www.adminjie.com)网站源码,微信源码,游戏源码,商业源码分享平台。
当前位置:网站首页 技术文章 网络编程 正文

聊聊有关thinkphp中的Image操作

时间:2022-01-11 [网络编程]作者:fabuyuan 浏览:3 次

下面thinkphp框架教程栏目将给大家介绍关于thinkphp3.2.3中的Image操作,希望对需要的朋友有所帮助!

参考thinkphp3.2.3中Image操作

https://www.kancloud.cn/manual/thinkphp/1878

不依赖任何框架

一般情况下都会安装gd库

需要Imagick请安装 https://pecl.php.net/package/imagick

安装

composer require whereof/think-image

实例化类库

$image = new \whereof\ThinkImage\Image();

默认使用GD库进行图像操作,如果需要使用Imagick库操作的话,需要改成:

$image = new \whereof\ThinkImage\Image(\Think\Image::IMAGE_IMAGICK); 
// 或者采用
$image = new \whereof\ThinkImage\Image('Imagick');

图像操作

下面来看下基础的图像操作功能的使用方法。

打开图像文件

假设当前入口文件目录下面有一个1.jpg文件

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

$image = \whereof\ThinkImage\Image(); 
$image->open('./1.jpg');

也可以简化成下面的方式:

$image = new \whereof\ThinkImage\Image(\whereof\ThinkImage\Image::IMAGE_GD,'./1.jpg'); // GD库
// 或者
$image = new \whereof\ThinkImage\Image(\whereof\ThinkImage\Image::IMAGE_IMAGICK,'./1.jpg');  // imagick库

获取图像信息

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

$width = $image->width(); // 返回图片的宽度
$height = $image->height(); // 返回图片的高度
$type = $image->type(); // 返回图片的类型
$mime = $image->mime(); // 返回图片的mime类型
$size = $image->size(); // 返回图片的尺寸数组 0 图片宽度 1 图片高度

裁剪图片

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

//将图片裁剪为400x400并保存为corp.jpg
$image->crop(400, 400)->save('./crop.jpg');

支持从某个坐标开始裁剪,例如下面从(100,30)开始裁剪:

//将图片裁剪为400x400并保存为corp.jpg
$image->crop(400, 400,100,30)->save('./crop.jpg');

生成缩略图

使用thumb方法生成缩略图

// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg
$image->thumb(150, 150)->save('./thumb.jpg');

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

IMAGE_THUMB_SCALE     =   1 ; //等比例缩放类型
IMAGE_THUMB_FILLED    =   2 ; //缩放后填充类型
IMAGE_THUMB_CENTER    =   3 ; //居中裁剪类型
IMAGE_THUMB_NORTHWEST =   4 ; //左上角裁剪类型
IMAGE_THUMB_SOUTHEAST =   5 ; //右下角裁剪类型
IMAGE_THUMB_FIXED     =   6 ; //固定尺寸缩放类型

居中裁剪

// 生成一个居中裁剪为150*150的缩略图并保存为thumb.jpg
$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_CENTER)->save('./thumb.jpg');

左上角剪裁

$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_NORTHWEST)->save('./thumb.jpg');

缩放填充

$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_FILLED)->save('./thumb.jpg');

固定大小

$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_FIXED)->save('./thumb.jpg');

添加图片水印

//将图片裁剪为440x440并保存为corp.jpg
$image->crop(440, 440)->save('./crop.jpg');
// 给裁剪后的图片添加图片水印(水印文件位于./logo.png),位置为右下角,保存为water.gif
$image->water('./logo.png')->save("water.gif");
// 给原图添加水印并保存为water_o.gif(需要重新打开原图)
$image->open('./1.jpg')->water('./logo.png')->save("water_o.gif");

water方法的第二个参数表示水印的位置,可以传入下列Think\Imag类的常量或者对应的数字:

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->open('./1.jpg')->water('./logo.png',\whereof\ThinkImage\Image::IMAGE_WATER_NORTHWEST)->save("water.jpg");

还可以支持水印图片的透明度(0~100,默认值是80),例如:

$image->open('./1.jpg')->water('./logo.png',\whereof\ThinkImage\Image::IMAGE_WATER_NORTHWEST,50)->save("water.jpg");

也可以支持给图片添加文字水印(假设在入口文件的同级目录下存在1.ttf字体文件),例如:

$image->open('./1.jpg')->text('ThinkPHP','./1.ttf',20,'#000000',\whereof\ThinkImage\Image::IMAGE_WATER_SOUTHEAST)->save("new.jpg");

推荐学习:《最新的10个thinkphp视频教程

以上就是聊聊有关thinkphp中的Image操作的详细内容,更多请关注站长家园其它相关文章!

本文标签:  thinkphpimages

转载请注明来源:聊聊有关thinkphp中的Image操作

本文永久链接地址:https://www.adminjie.com/post/7509.html

免责声明:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

附:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的部分源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,若有侵犯你的权益请:提交版权证明文件到邮箱 2225329873#qq.com(#换为@) 站长会进行审查之后,情况属实的会在三个工作日内为您删除。

  • 站长家园(原代码之家)会员升级
  • 最新文章
    • ajax怎么将异步请求改为同步

      ajax怎么将异步请求改为同步

      AJAX中根据async值的不同可分为同步和异步,默认情况下async值是true(异步提交);而想将异步改为同步,只需要将async的值设置为false即可。...

    • ajax是干什么的

      ajax是干什么的

      AJAX是一种用于创建快速动态网页的技术,可以用来:1、做局部请求以实现局部刷新(不刷新页面而更新网页);2、在页面加载后从服务器请求数据;3、在页面加载后从服...

    • javascript怎样求1-100的素数

      javascript怎样求1-100的素数

      方法:1、用“for(vari=2;i<=100;i++){for(varj=2;j<i;j++){if(i%j==0){}}”判断能够被整数整...

    • JavaScript中end是什么意思

      JavaScript中end是什么意思

      在JavaScript中,end的意思是“结束”,end()方法的作用就是结束当前链条中的最近的筛选操作,并将匹配元素集还原为之前的状态,语法为“元素.end(...

    • 十分钟教你使用css实现烟雾效果

      十分钟教你使用css实现烟雾效果

      本篇文章给大家分享怎样利用css实现烟雾的效果,希望对大家有帮助。仔细观察烟雾效果,有两个比较重要的特点:模糊效果颗粒感首先看模糊效果,想到模糊,大部分同学首先...

  • 买服务器送会员
  • 热门文章
  • 买服务器送会员