关于thinkphp:独立thinkphp323中Image操作

7次阅读

共计 2869 个字符,预计需要花费 8 分钟才能阅读完成。

参考 thinkphp3.2.3 中 Image 操作

https://www.kancloud.cn/manua…

不依赖任何框架

个别状况下都会装置 gd 库

须要 Imagick 请装置 https://pecl.php.net/package/…

装置

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"); 
正文完
 0