1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-08 14:56:32 +02:00

Fix discarded alpha channel of watermark in PlaceModifier (#1368)

This commit is contained in:
Oliver Vogel
2024-06-12 17:10:49 +02:00
committed by GitHub
parent 13c166d104
commit ed6ddf4aa7
3 changed files with 11 additions and 7 deletions

View File

@@ -18,7 +18,7 @@ class PlaceModifier extends GenericPlaceModifier implements SpecializedInterface
// set opacity of watermark
if ($this->opacity < 100) {
$watermark->core()->native()->setImageAlphaChannel(Imagick::ALPHACHANNEL_OPAQUE);
$watermark->core()->native()->setImageAlphaChannel(Imagick::ALPHACHANNEL_SET);
$watermark->core()->native()->evaluateImage(
Imagick::EVALUATE_DIVIDE,
$this->opacity > 0 ? 100 / $this->opacity : 1000,

View File

@@ -8,10 +8,11 @@ use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
use Intervention\Image\Modifiers\PlaceModifier;
use Intervention\Image\Tests\GdTestCase;
use Intervention\Image\Drivers\Gd\Modifiers\PlaceModifier as PlaceModifierGd;
#[RequiresPhpExtension('gd')]
#[CoversClass(\Intervention\Image\Modifiers\PlaceModifier::class)]
#[CoversClass(\Intervention\Image\Drivers\Gd\Modifiers\PlaceModifier::class)]
#[CoversClass(PlaceModifier::class)]
#[CoversClass(PlaceModifierGd::class)]
final class PlaceModifierTest extends GdTestCase
{
public function testColorChange(): void
@@ -27,7 +28,8 @@ final class PlaceModifierTest extends GdTestCase
$image = $this->readTestImage('test.jpg');
$this->assertEquals('febc44', $image->pickColor(300, 25)->toHex());
$image->modify(new PlaceModifier($this->getTestResourcePath('circle.png'), 'top-right', 0, 0, 50));
$this->assertEquals('987028', $image->pickColor(300, 25)->toHex());
$this->assertColor(152, 112, 40, 255, $image->pickColor(300, 25), tolerance: 1);
$this->assertColor(255, 202, 107, 255, $image->pickColor(274, 5), tolerance: 1);
}
public function testColorChangeOpacityJpeg(): void

View File

@@ -8,10 +8,11 @@ use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
use Intervention\Image\Modifiers\PlaceModifier;
use Intervention\Image\Tests\ImagickTestCase;
use Intervention\Image\Drivers\Imagick\Modifiers\PlaceModifier as PlaceModifierImagick;
#[RequiresPhpExtension('imagick')]
#[CoversClass(\Intervention\Image\Modifiers\BlurModifier::class)]
#[CoversClass(\Intervention\Image\Drivers\Imagick\Modifiers\PlaceModifier::class)]
#[CoversClass(PlaceModifier::class)]
#[CoversClass(PlaceModifierImagick::class)]
final class PlaceModifierTest extends ImagickTestCase
{
public function testColorChange(): void
@@ -27,7 +28,8 @@ final class PlaceModifierTest extends ImagickTestCase
$image = $this->readTestImage('test.jpg');
$this->assertEquals('febc44', $image->pickColor(300, 25)->toHex());
$image->modify(new PlaceModifier($this->getTestResourcePath('circle.png'), 'top-right', 0, 0, 50));
$this->assertEquals('7f5e22', $image->pickColor(300, 25)->toHex());
$this->assertColor(152, 112, 40, 255, $image->pickColor(300, 25), tolerance: 1);
$this->assertColor(255, 202, 107, 255, $image->pickColor(274, 5), tolerance: 1);
}
public function testColorChangeOpacityJpeg(): void