ThinkPHP图像处理

ThinkPHP中的图像处理的主要是GD库和Imagick库,其中imagick需要后期安装,我们常用的是GD库。

一、实例化类库

//实例化图像处理类,默认为GD库

$image=new Image();


//采用Imagick扩展库,默认没安装

$image=new Image(Image::IMAGE_IMAGICK);

$image=new Image('Imagick');


二.获取图像信息

我们讲一张图片保存在 Public 公共目录下,命名为:1.jpg。首先,通过Image 打开图像。

//实例化图象处理类库
$image = newImage();

//加载一张预处理的图片
$image->open('./Public/1.jpg');

//上面两句,可以用一句话包含
$image = newImage(Image::IMAGE_GD,'./Public/1.jpg');

//获取图片信息
$arr['width'] = $image->width();
$arr[
'height'] = $image->height();
$arr[
'type'] = $image->type();
$arr[
'mime'] = $image->mime();
$arr[
'size'] = $image->size();
var_dump($arr);


三.图像处理

1、使用 crop()save()方法可以实现图像的裁剪功能。
//裁剪图片,高400,宽400

$image->crop(400,400)->save('./Public/2.jpg');

//裁剪图片,坐标100,100开始裁剪
$image->crop(400,400,100,100)->save('./Public/2.jpg');

//裁剪图片,生成后的图片压缩成高宽200
$image->crop(400,400,100,100,200,200)->save('./Public/2.jpg');

2、使用 thumb方法生成缩略图。
//生成缩略图
$image->thumb(300,300)->save('./Public/2.jpg');

PS:虽然我们设置了宽高300,但实际上它是300 x 168,因为生成缩略图采用默认等比例缩放的。如果想用其它缩略图模式,可以使用以下方式。

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

//生成缩略图,以中心点截取,直接传3也可以
$image->thumb(300,300,Image::IMAGE_THUMB_CENTER)->save('./Public/2.jpg');

3、使用 water()方法可以生成一张包含水印的图片。

//在图片右下角添加水印并生成
$image->water('./Public/logo.png')->save('./Public/2.jpg');

由于默认是右下角水印位置,如果想更改水印位置,可以在第二参数使用如下:
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('./Public/logo.png', Image::IMAGE_WATER_NORTHWEST)->save('./Public/2.jpg');

//设置水印的透明度,默认为801-100之间
$image->water('./Public/logo.png', Image::IMAGE_WATER_NORTHWEST, 30)->save('./Public/2.jpg');

//设置文本水印
$image->text('YCKU.COM','./Public/consola.ttf', 20,'#ffffff',
Image::
IMAGE_WATER_SOUTHEAST)->save('./Public/2.jpg');

<?php use PHPImageWorkshop\ImageWorkshop as ImageWorkshop; require_once(__DIR__.'/autoload.php'); class ImageWorkshopTest extends \PHPUnit_Framework_TestCase { ===================================================================================          const IMAGE_SAMPLE_PATH = '/Resources/images/sample1.jpg';     const FONT_SAMPLE_PATH  = '/Resources/fonts/arial.ttf';     const WEB_PATH          = 'http://localhost:8000';     public function testInitFromPath()     {         // test 1                  $layer = ImageWorkshop::initFromPath(__DIR__.static::IMAGE_SAMPLE_PATH);                  $this->assertTrue(is_object($layer) === true, 'Expect $layer to be an object');         $this->assertTrue(get_class($layer) === 'PHPImageWorkshop\Core\ImageWorkshopLayer', 'Expect $layer to be an ImageWorkshopLayer object');         // test 2         $layer = ImageWorkshop::initFromPath('file://'.__DIR__.static::IMAGE_SAMPLE_PATH);         $this->assertTrue(is_object($layer) === true, 'Expect $layer to be an object');         $this->assertTrue(get_class($layer) === 'PHPImageWorkshop\Core\ImageWorkshopLayer', 'Expect $layer to be an ImageWorkshopLayer object');         // test 3         if (version_compare(PHP_VERSION, '5.4', '>=')) {             $layer = ImageWorkshop::initFromPath(static::WEB_PATH.'/sample1.jpg');             $this->assertTrue(is_object($layer) === true, 'Expect $layer to be an object');             $this->assertTrue(get_class($layer) === 'PHPImageWorkshop\Core\ImageWorkshopLayer', 'Expect $layer to be an ImageWorkshopLayer object');         }本库的优势。缩略图的速度非常快,质量非常高支持智能剪裁很好的支持GIF图片5种缩略图模式图像对比功能图像高级过滤功能图像混合其他图像处理库支持的API基本都支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值