Skip to content

Commit ed6ddf4

Browse files
authored
Fix discarded alpha channel of watermark in PlaceModifier (#1368)
1 parent 13c166d commit ed6ddf4

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

src/Drivers/Imagick/Modifiers/PlaceModifier.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public function apply(ImageInterface $image): ImageInterface
1818

1919
// set opacity of watermark
2020
if ($this->opacity < 100) {
21-
$watermark->core()->native()->setImageAlphaChannel(Imagick::ALPHACHANNEL_OPAQUE);
21+
$watermark->core()->native()->setImageAlphaChannel(Imagick::ALPHACHANNEL_SET);
2222
$watermark->core()->native()->evaluateImage(
2323
Imagick::EVALUATE_DIVIDE,
2424
$this->opacity > 0 ? 100 / $this->opacity : 1000,

tests/Unit/Drivers/Gd/Modifiers/PlaceModifierTest.php

+5-3
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@
88
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
99
use Intervention\Image\Modifiers\PlaceModifier;
1010
use Intervention\Image\Tests\GdTestCase;
11+
use Intervention\Image\Drivers\Gd\Modifiers\PlaceModifier as PlaceModifierGd;
1112

1213
#[RequiresPhpExtension('gd')]
13-
#[CoversClass(\Intervention\Image\Modifiers\PlaceModifier::class)]
14-
#[CoversClass(\Intervention\Image\Drivers\Gd\Modifiers\PlaceModifier::class)]
14+
#[CoversClass(PlaceModifier::class)]
15+
#[CoversClass(PlaceModifierGd::class)]
1516
final class PlaceModifierTest extends GdTestCase
1617
{
1718
public function testColorChange(): void
@@ -27,7 +28,8 @@ public function testColorChangeOpacityPng(): void
2728
$image = $this->readTestImage('test.jpg');
2829
$this->assertEquals('febc44', $image->pickColor(300, 25)->toHex());
2930
$image->modify(new PlaceModifier($this->getTestResourcePath('circle.png'), 'top-right', 0, 0, 50));
30-
$this->assertEquals('987028', $image->pickColor(300, 25)->toHex());
31+
$this->assertColor(152, 112, 40, 255, $image->pickColor(300, 25), tolerance: 1);
32+
$this->assertColor(255, 202, 107, 255, $image->pickColor(274, 5), tolerance: 1);
3133
}
3234

3335
public function testColorChangeOpacityJpeg(): void

tests/Unit/Drivers/Imagick/Modifiers/PlaceModifierTest.php

+5-3
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@
88
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
99
use Intervention\Image\Modifiers\PlaceModifier;
1010
use Intervention\Image\Tests\ImagickTestCase;
11+
use Intervention\Image\Drivers\Imagick\Modifiers\PlaceModifier as PlaceModifierImagick;
1112

1213
#[RequiresPhpExtension('imagick')]
13-
#[CoversClass(\Intervention\Image\Modifiers\BlurModifier::class)]
14-
#[CoversClass(\Intervention\Image\Drivers\Imagick\Modifiers\PlaceModifier::class)]
14+
#[CoversClass(PlaceModifier::class)]
15+
#[CoversClass(PlaceModifierImagick::class)]
1516
final class PlaceModifierTest extends ImagickTestCase
1617
{
1718
public function testColorChange(): void
@@ -27,7 +28,8 @@ public function testColorChangeOpacityPng(): void
2728
$image = $this->readTestImage('test.jpg');
2829
$this->assertEquals('febc44', $image->pickColor(300, 25)->toHex());
2930
$image->modify(new PlaceModifier($this->getTestResourcePath('circle.png'), 'top-right', 0, 0, 50));
30-
$this->assertEquals('7f5e22', $image->pickColor(300, 25)->toHex());
31+
$this->assertColor(152, 112, 40, 255, $image->pickColor(300, 25), tolerance: 1);
32+
$this->assertColor(255, 202, 107, 255, $image->pickColor(274, 5), tolerance: 1);
3133
}
3234

3335
public function testColorChangeOpacityJpeg(): void

0 commit comments

Comments
 (0)