Thinkphp 专题/图像处理

图像处理

使用Think\Image类进行图像处理功能,支持Gd库和Imagick库,包括对GIf图像处理的支持。

实例化类库

$image = new \Think\Image(); 

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

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

图像操作

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

打开图像文件

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

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

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

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

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

 

获取图像信息

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

$image = new \Think\Image(); 
$image->open('./1.jpg');
$width = $image->width(); // 返回图片的宽度
$height = $image->height(); // 返回图片的高度
$type = $image->type(); // 返回图片的类型
$mime = $image->mime(); // 返回图片的mime类型
$size = $image->size(); // 返回图片的尺寸数组 0 图片宽度 1 图片高度

裁剪图片

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

$image = new \Think\Image(); 
$image->open('./1.jpg');
//将图片裁剪为400x400并保存为corp.jpg
$image->crop(400, 400)->save('./crop.jpg');

 

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

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

 

生成缩略图

使用thumb方法生成缩略图

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

 

我们看到实际生成的缩略图并不是150*150,因为默认采用原图等比例缩放的方式生成缩略图,最大宽度是150。

可以支持其他类型的缩略图生成,设置包括Think\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 ; //固定尺寸缩放类型

 

例如:

居中裁剪

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

 

左上角剪裁

$image = new \Think\Image(); 
$image->open('./1.jpg');
// 生成一个左上角裁剪为150*150的缩略图并保存为thumb.jpg
$image->thumb(150, 150,\Think\Image::IMAGE_THUMB_NORTHWEST)->save('./thumb.jpg')

 

缩放填充

$image = new \Think\Image(); 
$image->open('./1.jpg');
// 生成一个缩放后填充大小150*150的缩略图并保存为thumb.jpg
$image->thumb(150, 150,\Think\Image::IMAGE_THUMB_FILLED)->save('./thumb.jpg');

 

固定大小

$image = new \Think\Image(); 
$image->open('./1.jpg');
// 生成一个固定大小为150*150的缩略图并保存为thumb.jpg
$image->thumb(150, 150,\Think\Image::IMAGE_THUMB_FIXED)->save('./thumb.jpg');

 采用固定大小的缩略图可能会有所变形

 

添加图片水印

$image = new \Think\Image(); 
$image->open('./1.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\Image类的常量或者对应的数字:

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 = new \Think\Image(); 
// 在图片左上角添加水印(水印文件位于./logo.png) 并保存为water.jpg
$image->open('./1.jpg')->water('./logo.png',\Think\Image::IMAGE_WATER_NORTHWEST)->save("water.jpg"); 

 

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

$image = new \Think\Image(); 
// 在图片左上角添加水印(水印文件位于./logo.png) 水印图片的透明度为50 并保存为water.jpg
$image->open('./1.jpg')->water('./logo.png',\Think\Image::IMAGE_WATER_NORTHWEST,50)->save("water.jpg"); 

 

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

$image = new \Think\Image(); 
// 在图片右下角添加水印文字 ThinkPHP 并保存为new.jpg
$image->open('./1.jpg')->text('ThinkPHP','./1.ttf',20,'#000000',\Think\Image::IMAGE_WATER_SOUTHEAST)->save("new.jpg"); 

 

thinkphp是一个使用PHP语言编写的开源框架,旨在为开发人员提供便捷的开发方式和高效的开发体验。而dompdf是一个用于将HTML文档转换为PDF格式的PHP库。 在thinkphp中引入dompdf需要经过以下步骤: 1. 下载dompdf库:首先需要在dompdf的官方网站或者开源代码托管平台上下载dompdf的最新版本。通常来说,dompdf会以一个压缩文件的形式提供下载。 2. 解压缩:将下载得到的压缩文件解压缩到thinkphp项目的合适目录下,可以将dompdf放置在thinkphp的vendor目录中。 3. 引入dompdf:在thinkphp项目中,打开config目录下的config.php或者其他合适的配置文件。在文件中加入下面的代码片段: ```php // 引入dompdf的自动加载文件 require_once APP_PATH . 'vendor/dompdf/autoload.inc.php'; ``` 在此代码中,`APP_PATH`是thinkphp框架中存放应用代码的目录,根据实际情况修改路径。 4. 使用dompdf:在需要使用dompdf的代码文件中,使用`use`关键字引入dompdf的相关命名空间,并使用dompdf提供的类和方法完成对HTML文档转换为PDF格式的操作。例如: ```php use Dompdf\Dompdf; // 创建PDF对象 $dompdf = new Dompdf(); // 将HTML内容装载到PDF对象中 $dompdf->loadHtml('<h1>Hello, Dompdf!</h1>'); // 渲染PDF $dompdf->render(); // 输出PDF $dompdf->stream(); ``` 在上述示例代码中,首先通过`use`关键字引入了dompdf库的命名空间。然后,创建一个Dompdf对象,并使用`loadHtml`方法加载HTML内容。接着,使用`render`方法将HTML渲染为PDF,最后使用`stream`方法输出PDF内容。 综上所述,通过以上步骤,我们可以在thinkphp项目中成功引入dompdf库,并使用其功能进行HTML文档到PDF格式的转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值