diff --git a/src/Manipulators/Watermark.php b/src/Manipulators/Watermark.php index 68ce3fd..e4dbaf7 100644 --- a/src/Manipulators/Watermark.php +++ b/src/Manipulators/Watermark.php @@ -114,7 +114,7 @@ public function run(ImageInterface $image): ImageInterface ]); $watermark = $size->run($watermark); - return $image->insert($watermark, intval($markx), intval($marky), $markpos, $markalpha); + return $image->insert($watermark, intval($markx), intval($marky), $markpos, $markalpha / 100); } /** diff --git a/tests/Manipulators/WatermarkTest.php b/tests/Manipulators/WatermarkTest.php index a30f15d..a929dd1 100644 --- a/tests/Manipulators/WatermarkTest.php +++ b/tests/Manipulators/WatermarkTest.php @@ -212,6 +212,43 @@ public function testGetPosition() $this->assertSame('bottom-right', $this->manipulator->setParams(['markpos' => 'invalid'])->getPosition()); } + public function testRunNormalizesAlphaToZeroOneRange() + { + $watermarkImage = \Mockery::mock(ImageInterface::class, function ($mock) { + $mock->shouldReceive('width')->andReturn(0)->once(); + $mock->shouldReceive('scale')->once(); + }); + + $image = \Mockery::mock(ImageInterface::class, function ($mock) use ($watermarkImage) { + $mock->shouldReceive('insert') + ->withArgs(function ($wm, $x, $y, $pos, $alpha) { + return $alpha >= 0 && $alpha <= 1 && 0.65 === $alpha; + }) + ->once() + ->andReturnSelf(); + $mock->shouldReceive('driver')->andReturn(\Mockery::mock(DriverInterface::class, function ($mock) use ($watermarkImage) { + $mock->shouldReceive('decodeImage')->with('content')->andReturn($watermarkImage)->once(); + }))->once(); + }); + + $this->manipulator->setWatermarks(\Mockery::mock('League\Flysystem\FilesystemOperator', function ($watermarks) { + $watermarks->shouldReceive('fileExists')->with('image.jpg')->andReturn(true)->once(); + $watermarks->shouldReceive('read')->with('image.jpg')->andReturn('content')->once(); + })); + + $this->manipulator->setParams([ + 'mark' => 'image.jpg', + 'markw' => '100', + 'markh' => '100', + 'markpad' => '10', + 'markalpha' => 65, + ]); + + $result = $this->manipulator->run($image); + + $this->assertInstanceOf(ImageInterface::class, $result); + } + public function testGetAlpha() { $this->assertSame(100, $this->manipulator->setParams(['markalpha' => 'invalid'])->getAlpha());