5 use \Intervention\Image\Gd\Color;
17 $base = $this->
argument(0)->type(
'string')->value();
19 $tolerance = $this->
argument(2)->type(
'numeric')->value(0);
20 $feather = $this->
argument(3)->type(
'numeric')->value(0);
22 $width = $image->getWidth();
23 $height = $image->getHeight();
26 $checkTransparency =
false;
30 $away = array(
'top',
'right',
'bottom',
'left');
31 } elseif (is_string($away)) {
36 foreach ($away
as $key => $value) {
37 $away[$key] = strtolower($value);
41 switch (strtolower($base)) {
44 $checkTransparency =
true;
52 $base_y = $height - 1;
64 if ($checkTransparency) {
67 $color = $image->pickColor($base_x, $base_y,
'object');
76 if (in_array(
'top', $away)) {
78 for ($y=0; $y < ceil($height/2); $y++) {
79 for ($x=0; $x < $width; $x++) {
81 $checkColor = $image->pickColor($x, $y,
'object');
83 if ($checkTransparency) {
84 $checkColor->r = $color->r;
85 $checkColor->g = $color->g;
86 $checkColor->b = $color->b;
89 if ($color->differs($checkColor, $tolerance)) {
90 $top_y = max(0, $y - $feather);
100 if (in_array(
'left', $away)) {
102 for ($x=0; $x < ceil($width/2); $x++) {
103 for ($y=$top_y; $y < $height; $y++) {
105 $checkColor = $image->pickColor($x, $y,
'object');
107 if ($checkTransparency) {
108 $checkColor->r = $color->r;
109 $checkColor->g = $color->g;
110 $checkColor->b = $color->b;
113 if ($color->differs($checkColor, $tolerance)) {
114 $top_x = max(0, $x - $feather);
124 if (in_array(
'bottom', $away)) {
126 for ($y=($height-1); $y >= floor($height/2)-1; $y--) {
127 for ($x=$top_x; $x < $width; $x++) {
129 $checkColor = $image->pickColor($x, $y,
'object');
131 if ($checkTransparency) {
132 $checkColor->r = $color->r;
133 $checkColor->g = $color->g;
134 $checkColor->b = $color->b;
137 if ($color->differs($checkColor, $tolerance)) {
138 $bottom_y = min($height, $y+1 + $feather);
148 if (in_array(
'right', $away)) {
150 for ($x=($width-1); $x >= floor($width/2)-1; $x--) {
151 for ($y=$top_y; $y < $bottom_y; $y++) {
153 $checkColor = $image->pickColor($x, $y,
'object');
155 if ($checkTransparency) {
156 $checkColor->r = $color->r;
157 $checkColor->g = $color->g;
158 $checkColor->b = $color->b;
161 if ($color->differs($checkColor, $tolerance)) {
162 $bottom_x = min($width, $x+1 + $feather);
173 return $this->
modify($image, 0, 0, $top_x, $top_y, ($bottom_x-$top_x), ($bottom_y-$top_y), ($bottom_x-$top_x), ($bottom_y-$top_y));