Version 0.7.0 #1

Merged
kor-elf merged 90 commits from develop into main 2023-12-08 21:18:23 +06:00
2 changed files with 44 additions and 0 deletions
Showing only changes of commit c1cf5a1ae9 - Show all commits

View File

@ -0,0 +1,8 @@
<?php declare(strict_types=1);
namespace App\Captcha\Contracts;
interface ImageLines
{
public function processing(Image $image, array $colors, int $lines = 3): Image;
}

View File

@ -0,0 +1,36 @@
<?php declare(strict_types=1);
namespace App\Captcha\Images;
use App\Captcha\Contracts\ImageLines;
use Illuminate\Support\Arr;
use App\Captcha\Contracts\Image as ImageContract;
class Lines implements ImageLines
{
public function processing(ImageContract $image, array $colors, $lines = 3): ImageContract
{
$imageWidth = $image->getWidth();
$imageHeight = $image->getHeight();
for ($i = 0; $i <= $lines; $i++) {
$image->addLine(
x1: mt_rand(0, $imageWidth) + $i * mt_rand(0, $imageHeight),
y1: mt_rand(0, $imageHeight),
x2: mt_rand(0, $imageWidth),
y2: mt_rand(0, $imageHeight),
hexColor: $this->lineColors($colors)
);
}
return $image;
}
private function lineColors(array $colors): string
{
if (!empty($colors)) {
return Arr::random($colors);
}
return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);
}
}