mirror of
https://github.com/Intervention/image.git
synced 2025-08-21 05:01:20 +02:00
changed default alpha to float values to 0-1
This commit is contained in:
@@ -857,17 +857,17 @@ class Image
|
||||
$alpha = $mask->pickColor($x, $y, 'array');
|
||||
|
||||
if ($mask_with_alpha) {
|
||||
$alpha = $alpha['alpha']; // use alpha channel as mask
|
||||
$alpha = $alpha['a']; // use alpha channel as mask
|
||||
} else {
|
||||
$alpha = 127 - floor($alpha['red'] / 2); // use red channel as mask
|
||||
$alpha = floatval(round($alpha['r'] / 255, 2)); // use red channel as mask
|
||||
}
|
||||
|
||||
// preserve alpha of original image...
|
||||
if ($color['alpha'] > $alpha) {
|
||||
$alpha = $color['alpha'];
|
||||
if ($color['a'] < $alpha) {
|
||||
$alpha = $color['a'];
|
||||
}
|
||||
|
||||
$pixelColor = $this->parseColor(array($color['red'], $color['green'], $color['blue'], $alpha));
|
||||
$pixelColor = array($color['r'], $color['g'], $color['b'], $alpha);
|
||||
$maskedImage->pixel($pixelColor, $x, $y);
|
||||
}
|
||||
}
|
||||
@@ -1245,8 +1245,20 @@ class Image
|
||||
$color = sprintf('#%02x%02x%02x', $color['red'], $color['green'], $color['blue']);
|
||||
break;
|
||||
|
||||
case 'int':
|
||||
case 'integer':
|
||||
# in gd2 library color already is int...
|
||||
break;
|
||||
|
||||
default:
|
||||
case 'array':
|
||||
$color = imagecolorsforindex($this->resource, $color);
|
||||
$color = array(
|
||||
'r' => $color['red'],
|
||||
'g' => $color['green'],
|
||||
'b' => $color['blue'],
|
||||
'a' => $this->alpha2rgba($color['alpha'])
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1261,7 +1273,7 @@ class Image
|
||||
*/
|
||||
public function parseColor($value)
|
||||
{
|
||||
$alpha = 0;
|
||||
$a = 0; // alpha value
|
||||
|
||||
if (is_int($value)) {
|
||||
|
||||
@@ -1274,7 +1286,8 @@ class Image
|
||||
if (count($value) == 4) {
|
||||
|
||||
// color array with alpha value
|
||||
list($r, $g, $b, $alpha) = $value;
|
||||
list($r, $g, $b, $a) = $value;
|
||||
$a = $this->alpha2gd($a);
|
||||
|
||||
} elseif (count($value) == 3) {
|
||||
|
||||
@@ -1305,7 +1318,7 @@ class Image
|
||||
$r = ($matches[1] >= 0 && $matches[1] <= 255) ? intval($matches[1]) : 0;
|
||||
$g = ($matches[2] >= 0 && $matches[2] <= 255) ? intval($matches[2]) : 0;
|
||||
$b = ($matches[3] >= 0 && $matches[3] <= 255) ? intval($matches[3]) : 0;
|
||||
$alpha = $this->alpha2gd($matches[4]);
|
||||
$a = $this->alpha2gd($matches[4]);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1316,7 +1329,7 @@ class Image
|
||||
|
||||
} elseif (isset($r) && isset($g) && isset($b)) {
|
||||
|
||||
return imagecolorallocatealpha($this->resource, $r, $g, $b, $alpha);
|
||||
return imagecolorallocatealpha($this->resource, $r, $g, $b, $a);
|
||||
|
||||
} else {
|
||||
|
||||
|
@@ -151,14 +151,14 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
||||
{
|
||||
$img = Image::canvas(100, 100);
|
||||
$color = $img->pickColor(50, 50, 'array');
|
||||
$this->assertInternalType('int', $color['red']);
|
||||
$this->assertInternalType('int', $color['green']);
|
||||
$this->assertInternalType('int', $color['blue']);
|
||||
$this->assertInternalType('int', $color['alpha']);
|
||||
$this->assertEquals($color['red'], 0);
|
||||
$this->assertEquals($color['green'], 0);
|
||||
$this->assertEquals($color['blue'], 0);
|
||||
$this->assertEquals($color['alpha'], 127);
|
||||
$this->assertInternalType('int', $color['r']);
|
||||
$this->assertInternalType('int', $color['g']);
|
||||
$this->assertInternalType('int', $color['b']);
|
||||
$this->assertInternalType('float', $color['a']);
|
||||
$this->assertEquals($color['r'], 0);
|
||||
$this->assertEquals($color['g'], 0);
|
||||
$this->assertEquals($color['b'], 0);
|
||||
$this->assertEquals($color['a'], 0);
|
||||
}
|
||||
|
||||
public function testOpenImage()
|
||||
@@ -532,10 +532,10 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
||||
$this->assertEquals($img->width, 50);
|
||||
$this->assertEquals($img->height, 50);
|
||||
$checkColor = $img->pickColor(0, 0, 'array');
|
||||
$this->assertEquals($checkColor['red'], 0);
|
||||
$this->assertEquals($checkColor['green'], 0);
|
||||
$this->assertEquals($checkColor['blue'], 0);
|
||||
$this->assertEquals($checkColor['alpha'], 127);
|
||||
$this->assertEquals($checkColor['r'], 0);
|
||||
$this->assertEquals($checkColor['g'], 0);
|
||||
$this->assertEquals($checkColor['b'], 0);
|
||||
$this->assertEquals($checkColor['a'], 0);
|
||||
}
|
||||
|
||||
public function testInsertImage()
|
||||
@@ -804,15 +804,15 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
||||
$this->assertEquals($img->width, 32);
|
||||
$this->assertEquals($img->height, 32);
|
||||
$checkColor = $img->pickColor(15, 15, 'array');
|
||||
$this->assertEquals($checkColor['red'], 254);
|
||||
$this->assertEquals($checkColor['green'], 204);
|
||||
$this->assertEquals($checkColor['blue'], 112);
|
||||
$this->assertEquals($checkColor['alpha'], 64);
|
||||
$this->assertEquals($checkColor['r'], 254);
|
||||
$this->assertEquals($checkColor['g'], 204);
|
||||
$this->assertEquals($checkColor['b'], 112);
|
||||
$this->assertEquals($checkColor['a'], 0.5);
|
||||
$checkColor = $img->pickColor(31, 31, 'array');
|
||||
$this->assertEquals($checkColor['red'], 255);
|
||||
$this->assertEquals($checkColor['green'], 166);
|
||||
$this->assertEquals($checkColor['blue'], 0);
|
||||
$this->assertEquals($checkColor['alpha'], 64);
|
||||
$this->assertEquals($checkColor['r'], 255);
|
||||
$this->assertEquals($checkColor['g'], 166);
|
||||
$this->assertEquals($checkColor['b'], 0);
|
||||
$this->assertEquals($checkColor['a'], 0.5);
|
||||
}
|
||||
|
||||
public function testMaskImage()
|
||||
@@ -826,15 +826,15 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
||||
$this->assertEquals($img->width, 32);
|
||||
$this->assertEquals($img->height, 32);
|
||||
$checkColor = $img->pickColor(16, 2, 'array');
|
||||
$this->assertEquals($checkColor['red'], 254);
|
||||
$this->assertEquals($checkColor['green'], 230);
|
||||
$this->assertEquals($checkColor['blue'], 186);
|
||||
$this->assertEquals($checkColor['alpha'], 22);
|
||||
$this->assertEquals($checkColor['r'], 254);
|
||||
$this->assertEquals($checkColor['g'], 230);
|
||||
$this->assertEquals($checkColor['b'], 186);
|
||||
$this->assertEquals($checkColor['a'], 0.83);
|
||||
$checkColor = $img->pickColor(31, 31, 'array');
|
||||
$this->assertEquals($checkColor['red'], 0);
|
||||
$this->assertEquals($checkColor['green'], 0);
|
||||
$this->assertEquals($checkColor['blue'], 0);
|
||||
$this->assertEquals($checkColor['alpha'], 127);
|
||||
$this->assertEquals($checkColor['r'], 0);
|
||||
$this->assertEquals($checkColor['g'], 0);
|
||||
$this->assertEquals($checkColor['b'], 0);
|
||||
$this->assertEquals($checkColor['a'], 0);
|
||||
|
||||
// use alpha channel as mask
|
||||
$img = Image::make('public/test.jpg');
|
||||
@@ -845,15 +845,15 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
||||
$this->assertEquals($img->width, 32);
|
||||
$this->assertEquals($img->height, 32);
|
||||
$checkColor = $img->pickColor(5, 5, 'array');
|
||||
$this->assertEquals($checkColor['red'], 0);
|
||||
$this->assertEquals($checkColor['green'], 0);
|
||||
$this->assertEquals($checkColor['blue'], 0);
|
||||
$this->assertEquals($checkColor['alpha'], 127);
|
||||
$this->assertEquals($checkColor['r'], 0);
|
||||
$this->assertEquals($checkColor['g'], 0);
|
||||
$this->assertEquals($checkColor['b'], 0);
|
||||
$this->assertEquals($checkColor['a'], 0);
|
||||
$checkColor = $img->pickColor(20, 15, 'array');
|
||||
$this->assertEquals($checkColor['red'], 254);
|
||||
$this->assertEquals($checkColor['green'], 190);
|
||||
$this->assertEquals($checkColor['blue'], 69);
|
||||
$this->assertEquals($checkColor['alpha'], 0);
|
||||
$this->assertEquals($checkColor['r'], 254);
|
||||
$this->assertEquals($checkColor['g'], 190);
|
||||
$this->assertEquals($checkColor['b'], 69);
|
||||
$this->assertEquals($checkColor['a'], 1);
|
||||
|
||||
// preserve existing alpha channel
|
||||
$img = Image::make('public/circle.png');
|
||||
@@ -864,15 +864,15 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
||||
$this->assertEquals($img->width, 32);
|
||||
$this->assertEquals($img->height, 32);
|
||||
$checkColor = $img->pickColor(5, 5, 'array');
|
||||
$this->assertEquals($checkColor['red'], 0);
|
||||
$this->assertEquals($checkColor['green'], 0);
|
||||
$this->assertEquals($checkColor['blue'], 0);
|
||||
$this->assertEquals($checkColor['alpha'], 127);
|
||||
$this->assertEquals($checkColor['r'], 0);
|
||||
$this->assertEquals($checkColor['g'], 0);
|
||||
$this->assertEquals($checkColor['b'], 0);
|
||||
$this->assertEquals($checkColor['a'], 0);
|
||||
$checkColor = $img->pickColor(15, 15, 'array');
|
||||
$this->assertEquals($checkColor['red'], 0);
|
||||
$this->assertEquals($checkColor['green'], 0);
|
||||
$this->assertEquals($checkColor['blue'], 0);
|
||||
$this->assertEquals($checkColor['alpha'], 25);
|
||||
$this->assertEquals($checkColor['r'], 0);
|
||||
$this->assertEquals($checkColor['g'], 0);
|
||||
$this->assertEquals($checkColor['b'], 0);
|
||||
$this->assertEquals($checkColor['a'], 0.8);
|
||||
|
||||
}
|
||||
|
||||
@@ -1106,8 +1106,20 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
||||
{
|
||||
$img = $this->getTestImage();
|
||||
|
||||
// rgb color array (default)
|
||||
$color = $img->pickColor(799, 599);
|
||||
$this->assertInternalType('array', $color);
|
||||
$this->assertInternalType('int', $color['r']);
|
||||
$this->assertEquals($color['r'], 255);
|
||||
$this->assertInternalType('int', $color['g']);
|
||||
$this->assertEquals($color['g'], 166);
|
||||
$this->assertInternalType('int', $color['b']);
|
||||
$this->assertEquals($color['b'], 0);
|
||||
$this->assertInternalType('float', $color['a']);
|
||||
$this->assertEquals($color['a'], 1);
|
||||
|
||||
// int color
|
||||
$color = $img->pickColor(100, 100);
|
||||
$color = $img->pickColor(100, 100, 'int');
|
||||
$this->assertInternalType('int', $color);
|
||||
$this->assertEquals($color, 16776956);
|
||||
|
||||
@@ -1121,16 +1133,6 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
||||
$this->assertInternalType('string', $color);
|
||||
$this->assertEquals($color, '#ffa600');
|
||||
|
||||
// rgb color array
|
||||
$color = $img->pickColor(799, 599, 'array');
|
||||
$this->assertInternalType('array', $color);
|
||||
$this->assertInternalType('int', $color['red']);
|
||||
$this->assertEquals($color['red'], 255);
|
||||
$this->assertInternalType('int', $color['green']);
|
||||
$this->assertEquals($color['green'], 166);
|
||||
$this->assertInternalType('int', $color['blue']);
|
||||
$this->assertEquals($color['blue'], 0);
|
||||
|
||||
// rgba color string
|
||||
$color = $img->pickColor(799, 599, 'rgba');
|
||||
$this->assertInternalType('string', $color);
|
||||
@@ -1183,34 +1185,34 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
||||
$img->fill('rgb(255, 0, 0)');
|
||||
|
||||
$checkColor = $img->pickColor(50, 50,'array');
|
||||
$this->assertEquals($checkColor['red'], 255);
|
||||
$this->assertEquals($checkColor['green'], 0);
|
||||
$this->assertEquals($checkColor['blue'], 0);
|
||||
$this->assertEquals($checkColor['alpha'], 0);
|
||||
$this->assertEquals($checkColor['r'], 255);
|
||||
$this->assertEquals($checkColor['g'], 0);
|
||||
$this->assertEquals($checkColor['b'], 0);
|
||||
$this->assertEquals($checkColor['a'], 1);
|
||||
|
||||
$img->rectangle('rgba(0,0,0,0.5)', 0, 0, 100, 100);
|
||||
$checkColor = $img->pickColor(50, 50,'array');
|
||||
$this->assertEquals($checkColor['red'], 128);
|
||||
$this->assertEquals($checkColor['green'], 0);
|
||||
$this->assertEquals($checkColor['blue'], 0);
|
||||
$this->assertEquals($checkColor['alpha'], 0);
|
||||
$this->assertEquals($checkColor['r'], 128);
|
||||
$this->assertEquals($checkColor['g'], 0);
|
||||
$this->assertEquals($checkColor['b'], 0);
|
||||
$this->assertEquals($checkColor['a'], 1);
|
||||
|
||||
$img = new Image(null, 100, 100);
|
||||
$img->fill('rgba(0,0,0,0.5)');
|
||||
$checkColor = $img->pickColor(50, 50,'array');
|
||||
$this->assertEquals($checkColor['red'], 0);
|
||||
$this->assertEquals($checkColor['green'], 0);
|
||||
$this->assertEquals($checkColor['blue'], 0);
|
||||
$this->assertEquals($checkColor['alpha'], 64);
|
||||
$this->assertEquals($checkColor['r'], 0);
|
||||
$this->assertEquals($checkColor['g'], 0);
|
||||
$this->assertEquals($checkColor['b'], 0);
|
||||
$this->assertEquals($checkColor['a'], 0.5);
|
||||
|
||||
$img = new Image(null, 100, 100);
|
||||
$color = imagecolorallocatealpha($img->resource, 0, 0, 255, 60);
|
||||
$img->fill($color);
|
||||
$checkColor = $img->pickColor(50, 50,'array');
|
||||
$this->assertEquals($checkColor['red'], 0);
|
||||
$this->assertEquals($checkColor['green'], 0);
|
||||
$this->assertEquals($checkColor['blue'], 255);
|
||||
$this->assertEquals($checkColor['alpha'], 60);
|
||||
$this->assertEquals($checkColor['r'], 0);
|
||||
$this->assertEquals($checkColor['g'], 0);
|
||||
$this->assertEquals($checkColor['b'], 255);
|
||||
$this->assertEquals($checkColor['a'], 0.53);
|
||||
}
|
||||
|
||||
public function testBrightnessImage()
|
||||
|
Reference in New Issue
Block a user