php裁剪圆形,使用 Intervention/image 包进行图片处理(裁剪成圆形)。怎么把四周的空白去掉?...

2e65718bc4a8faffab791d2a0fd57674.png

由于这个包没有裁剪成圆形的(自己一直没找到),然后通过扩展过滤器让他有裁剪成圆形的方法。现在可以裁剪成一个圆,但是我要把四周的白色也去掉(由于创建的是正方形的画布,php好像没有创建圆形的画布)。不知有遇到这样问题的小伙伴吗? 或者哪位大神可以指导一下

过滤器

namespace Intervention\Image\Filters;

class DemoFilter implements FilterInterface

{

/**

* Default size of filter effects

*/

const DEFAULT_SIZE = 10;

/**

* Size of filter effects

*

* @var integer

*/

private $size;

public $image;

/**

* Creates new instance of filter

*

* @param integer $size

*/

public function __construct($size = null)

{

$this->size = is_numeric($size) ? intval($size) : self::DEFAULT_SIZE;

}

function get_lt_rounder_corner($radius='200')

{

$img = imagecreatetruecolor($radius, $radius); // 创建一个正方形的图像

$bgcolor = imagecolorallocate($img, 255, 255, 255); // 图像的背景

$trans_colour = imagecolorallocatealpha($img, 255, 255, 255, 127);

imageellipse($img,30,30,40,40,$bgcolor);

$fgcolor = imagecolorallocate($img, 0, 0, 0);

imagefill($img, 0, 0, $trans_colour);

imagecolortransparent($img,$trans_colour);

// $radius,$radius:以图像的右下角开始画弧

// $radius*2, $radius*2:已宽度、高度画弧

// 180, 270:指定了角度的起始和结束点

// fgcolor:指定颜色

imagefilledarc($img, $radius, $radius, $radius * 2, $radius * 2, 180, 270, $fgcolor, IMG_ARC_PIE);

// 将弧角图片的颜色设置为透明

imagecolortransparent($img, $fgcolor);

return $img;

}

/**

* Applies filter effects to given image

*

* @param \Intervention\Image\Image $image

* @return \Intervention\Image\Image

*/

public function applyFilter(\Intervention\Image\Image $image)

{

$img=$image->getCore();

$radius = 100;

// lt(左上角)

$lt_corner = $this->get_lt_rounder_corner($radius);

imagecopymerge($img, $lt_corner, 0, 0, 0, 0, $radius, $radius, 100);

// lb(左下角)

$lb_corner = imagerotate($lt_corner, 90, 0);

imagecopymerge($img, $lb_corner, 0, 200 - $radius, 0, 0, $radius, $radius, 100);

// rb(右上角)

$rb_corner = imagerotate($lt_corner, 180, 0);

imagecopymerge($img, $rb_corner, 200 - $radius, 200 - $radius, 0, 0, $radius, $radius, 100);

// rt(右下角)

$rt_corner = imagerotate($lt_corner, 270, 0);

imagecopymerge($img, $rt_corner, 200 - $radius, 0, 0, 0, $radius, $radius, 100);

// $image->pixelate($this->size);

// $image->greyscale();

return $image;

}

}

调用

382023040f6c486acef0e41da2527747.png

NOT IS BECAUSE I WANT TO WRITE,

BUT I WANT TO INCREASE,

SO I GO TO WRITE~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要在 Laravel 项目中安装 intervention/image 库。可以通过 Composer 命令来安装: ``` composer require intervention/image ``` 安装完后,你可以在控制器中编写以下代码来实现图片上传功能: ```php use Illuminate\Http\Request; use Intervention\Image\Facades\Image; public function upload(Request $request) { $image = $request->file('image'); $filename = time() . '.' . $image->getClientOriginalExtension(); $path = public_path('uploads/' . $filename); // 裁剪并保存图片 Image::make($image->getRealPath())->resize(200, 200)->save($path); return response()->json(['status' => 'success', 'url' => '/uploads/' . $filename]); } ``` 这段代码做了以下几件事: 1. 从 Request 中获取上传的图片文件; 2. 生文件名,并保存到 Laravel 项目的 public/uploads 目录下; 3. 使用 intervention/image 库对图片进行裁剪,并保存到指定位置; 4. 返回上传功的 JSON 响应,括上传后的图片 URL。 最后,你需要在 Blade 模板中添加表单以及 JavaScript 代码来实现图片上传功能。可以参考以下代码: ```html <form id="upload-form" enctype="multipart/form-data"> <input type="file" name="image" id="image-input"> <button type="submit">上传图片</button> </form> <script> $(function() { $('#upload-form').submit(function(e) { e.preventDefault(); var formData = new FormData($(this)[0]); $.ajax({ url: '/upload', type: 'POST', data: formData, processData: false, contentType: false, success: function(data) { console.log(data); // 处理上传功后的逻辑 }, error: function(xhr, status, error) { console.error(error); // 处理上传失败后的逻辑 } }); }); }); </script> ``` 这段代码做了以下几件事: 1. 显示一个含文件上传表单的 HTML 表单; 2. 在表单提交时,使用 jQuery.ajax() 方法发送 POST 请求; 3. 将表单数据封装 FormData 对象,并设置 processData 和 contentType 选项为 false; 4. 在上传功时,处理服务器返回的 JSON 响应,例如显示上传的图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值