[英]Round image corners using intervention image and laravel 5.4
我需要使用干预图像和laravel将一些图像插入另一个图像。
这是我的主要形象:
这些是我要插入主图像的图像:
最后这个图片插入后:
好吧,我使用这段代码来做到这一点:
$img = Image::make(asset('images/cover.png' ) )->encode('jpg', 15);
$token = Session::get('_token');
$imgWidth = $img->width();
$imgHeight = $img->height();
$coverImages = Storage::allFiles('public/' . $token . '/cover');
$r1 = Image::make(asset('storage/' . $token . '/cover/r1.png') );
$r2 = Image::make(asset('storage/' . $token . '/cover/r2.png') );
$r1->resize(80, 180, function ($constraint){
$constraint->aspectRatio();
});
$r2->resize(80, 180, function ($constraint){
$constraint->aspectRatio();
});
$img->insert($r1, 'top-left', 190, 175);
$img->insert($r2, 'top-left', 290, 175);
$img->save( public_path("storage/{$token}/111111.png"));
现在我需要围绕r1.png
和r2.png
角来适应main image
。
你知道我怎么能这样做吗?
提前致谢
注意 :
感谢@Pascal Meunier
,但是
我需要自己围绕
r1.png
角落,因为出于某些原因我必须再次将圆形图像保存在另一个地方......
我找到了一种方法,通过使用canvas
并在main
图像之前插入r1
和r2
。
$cover = Image::make('main.png');
$r1 = Image::make('r1.png');
$r2 = Image::make('r2.png');
$r1->resize(80, 180, function ($constraint){
$constraint->aspectRatio();
});
$r2->resize(80, 180, function ($constraint){
$constraint->aspectRatio();
});
$canvas = Image::canvas(746, 738);
$canvas->insert($r1, 'top-left', 190, 175);
$canvas->insert($r2, 'top-left', 290, 175);
$canvas->insert($cover);
$canvas->save('final.png');
结果看起来像这样。
我自己没有尝试过,但可以使用Intervention
类中的mask
方法完成。 有了这个你需要另一个白色圆角矩形的图像,黑色背景为掩码。
它应该像这样工作:
$img = Image::make(asset('images/cover.png' ) )->encode('jpg', 15);
$token = Session::get('_token');
$imgWidth = $img->width();
$imgHeight = $img->height();
$coverImages = Storage::allFiles('public/' . $token . '/cover');
$r1 = Image::make(asset('storage/' . $token . '/cover/r1.png') );
$r2 = Image::make(asset('storage/' . $token . '/cover/r2.png') );
$r1->resize(80, 180, function ($constraint){
$constraint->aspectRatio();
})->mask('public/mask.png');
$r2->resize(80, 180, function ($constraint){
$constraint->aspectRatio();
})->mask('public/mask.png');
$img->insert($r1, 'top-left', 190, 175);
$img->insert($r2, 'top-left', 290, 175);
$img->save( public_path("storage/{$token}/111111.png"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.