mirror of https://gitee.com/topnuomi/water-mask
增加圆角处理
This commit is contained in:
parent
16ba9f320f
commit
5c3387a468
|
@ -48,6 +48,7 @@ class ImageTool
|
|||
default:
|
||||
$resource = null;
|
||||
}
|
||||
imagesavealpha($resource, true);
|
||||
|
||||
return $resource;
|
||||
}
|
||||
|
@ -63,9 +64,8 @@ class ImageTool
|
|||
{
|
||||
$options = array_merge([
|
||||
'position' => [0, 0],
|
||||
'pct' => 100,
|
||||
], $options);
|
||||
imagecopymerge(
|
||||
imagecopy(
|
||||
$resource,
|
||||
$addResource,
|
||||
$options['position'][0],
|
||||
|
@ -73,8 +73,7 @@ class ImageTool
|
|||
0,
|
||||
0,
|
||||
imagesx($addResource),
|
||||
imagesy($addResource),
|
||||
$options['pct']
|
||||
imagesy($addResource)
|
||||
);
|
||||
|
||||
return $resource;
|
||||
|
@ -157,6 +156,58 @@ class ImageTool
|
|||
return $targetResource;
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片圆角处理
|
||||
* @param $resource
|
||||
* @param int $size
|
||||
*/
|
||||
public static function radius(&$resource, $size = 10)
|
||||
{
|
||||
$w = imagesx($resource);
|
||||
$h = imagesy($resource);
|
||||
if (empty($size)) {
|
||||
$radius = min($w, $h) / 2;
|
||||
} else {
|
||||
$radius = $size / 2;
|
||||
}
|
||||
$img = imagecreatetruecolor($w, $h);
|
||||
imagesavealpha($img, true);
|
||||
$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
|
||||
imagefill($img, 0, 0, $bg);
|
||||
$r = $radius;
|
||||
for ($x = 0; $x < $w; $x++) {
|
||||
for ($y = 0; $y < $h; $y++) {
|
||||
$rgbColor = imagecolorat($resource, $x, $y);
|
||||
if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius))) {
|
||||
imagesetpixel($img, $x, $y, $rgbColor);
|
||||
} else {
|
||||
$yx = $r;
|
||||
$yy = $r;
|
||||
if (((($x - $yx) * ($x - $yx) + ($y - $yy) * ($y - $yy)) <= ($r * $r))) {
|
||||
imagesetpixel($img, $x, $y, $rgbColor);
|
||||
}
|
||||
$yx = $w - $r;
|
||||
$yy = $r;
|
||||
if (((($x - $yx) * ($x - $yx) + ($y - $yy) * ($y - $yy)) <= ($r * $r))) {
|
||||
imagesetpixel($img, $x, $y, $rgbColor);
|
||||
}
|
||||
$yx = $r;
|
||||
$yy = $h - $r;
|
||||
if (((($x - $yx) * ($x - $yx) + ($y - $yy) * ($y - $yy)) <= ($r * $r))) {
|
||||
imagesetpixel($img, $x, $y, $rgbColor);
|
||||
}
|
||||
$yx = $w - $r;
|
||||
$yy = $h - $r;
|
||||
if (((($x - $yx) * ($x - $yx) + ($y - $yy) * ($y - $yy)) <= ($r * $r))) {
|
||||
imagesetpixel($img, $x, $y, $rgbColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$resource = $img;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存图片
|
||||
* @param $resource
|
||||
|
|
1
main.php
1
main.php
|
@ -8,6 +8,7 @@ $maskResource1 = ImageTool::createResourceFromFile('resource/mask.png');
|
|||
$maskResource2 = ImageTool::createResourceFromFile('resource/mask.jpg');
|
||||
$maskResource3 = ImageTool::createResourceFromFile('resource/base.jpg');
|
||||
|
||||
ImageTool::radius($maskResource1, 40);
|
||||
// 合并图片
|
||||
ImageTool::merge($baseResource, $maskResource1, [
|
||||
'position' => [100, 100],
|
||||
|
|
Loading…
Reference in New Issue