php图像处理插件,ThinkPHP5图像处理插件

使用Composer安装ThinkPHP5的图像处理类库:

composer require topthink/think-image

前端处理

后台处理

// 获取表单上传文件 例如上传了001.jpg

$file = request()->file('image');

if (!$file) {

die('未检测到文件上传');

}

// 移动到框架应用根目录/uploads/ 目录下

$info = $file->move('uploads/image');

if ($info) {

$oimage = $info->getFilename();

$nyr = date("Ymd");

$type = $info->getExtension();

// 裁剪图片 将图片裁剪为300x300并保存为crop.png

$image = Image::open($file);

$image->crop(300, 300)->save('uploads/caijian/' . $nyr . '/1' . $oimage, $type);

$image = Image::open($file);

$image->crop(300, 300, 100, 30)->save('uploads/caijian/' . $nyr . '/2' . $oimage, $type);

// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.png

$image = Image::open($file);

$image->thumb(150, 150)->save('uploads/thumb/' . $nyr . '/' . $oimage, $type);

// 居中裁剪

$image = Image::open($file);

$image->thumb(150, 150, Image::THUMB_CENTER)->save('uploads/thumb/' . $nyr . '/1' . $oimage, $type);

$image = Image::open($file);

$image->thumb(150, 150, Image::THUMB_SOUTHEAST)->save('uploads/thumb/' . $nyr . '/2' . $oimage, $type);

// 对图像进行以x轴进行翻转操作

$image = Image::open($file);

$image->flip()->save('uploads/filp/' . $nyr . '/1' . $oimage, $type);

$image = Image::open($file);

$image->flip(Image::FLIP_Y)->save('uploads/filp/' . $nyr . '/2' . $oimage, $type);

// 对图像使用默认的顺时针旋转90度操作

$image = Image::open($file);

$image->rotate()->save('uploads/rotate/' . $nyr . '/1' . $oimage, $type);

// 给原图左上角添加水印并保存water_image.png

$waterimg = 'water.png';

$image = Image::open($file);

$image->water($waterimg)->save('uploads/water/' . $nyr . '/1' . $oimage, $type);

// 给原图左上角添加水印并保存water_image.png

$image = Image::open($file);

$image->water($waterimg, Image::WATER_NORTHWEST, 30)->save('uploads/water/' . $nyr . '/2' . $oimage, $type);

// 给原图左上角添加水印并保存water_image.png

$image = Image::open($file);

$ttf = str_replace("\\", "/", request()->server()['DOCUMENT_ROOT']) . '/font/test.ttf';

$ttf2 = str_replace("\\", "/", request()->server()['DOCUMENT_ROOT']) . '/font/FZZHJW.TTF';

$image->text('my first', $ttf, 50, '#FFFFFF', 3)->text('文字水印', $ttf2, 50,

'#FF0000', 9)->save('uploads/water/' . $nyr . '/3' . $oimage,

$type);

return json([

'扩展名' => $type,

'带目录的' => $info->getSaveName(),

'不带目录的' => $oimage,

]);

} else {

// 上传失败获取错误信息

return json([$file->getError()]);

}

1.插件代码save方法里没有判断目录 和创建目录

public function save($pathname, $type = null, $quality = 80, $interlace = true)

{

//自动获取图像类型

if (is_null($type)) {

$type = $this->info['type'];

} else {

$type = strtolower($type);

}

//-------新增的修改-----------检测目录是否存在

$dirname = dirname($pathname);

if ($dirname) {

if (!file_exists($dirname)) {

mkdir($dirname, 0777, true);

}

}

//保存图像

if ('jpeg' == $type || 'jpg' == $type) {

//JPEG图像设置隔行扫描

imageinterlace($this->im, $interlace);

imagejpeg($this->im, $pathname, $quality);

} elseif ('gif' == $type && !empty($this->gif)) {

$this->gif->save($pathname);

} elseif ('png' == $type) {

//设定保存完整的 alpha 通道信息

imagesavealpha($this->im, true);

//ImagePNG生成图像的质量范围从0到9的

imagepng($this->im, $pathname, min((int)($quality / 10), 9));

} else {

$fun = 'image' . $type;

$fun($this->im, $pathname);

}

return $this;

}

2.文字水印文件大小 当字体文件过大 水印会加入失败

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值