PDA

Просмотр полной версии : Градиент отказывается менять цвет


Roman Grudov
12.09.2022, 18:48
Создаю линейный градиент на картинку




PHP:






getImageAlphaChannel()) {
$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_SET);
}

$refl = $im;

$gradient = new Imagick();

$gradient->newPseudoImage($refl->getImageWidth(), $refl->getImageHeight(), 'gradient:transparent-white');

$refl->compositeImage($gradient, imagick::COMPOSITE_DSTOUT, 0, 0);

$canvas = new Imagick();

$width = $im->getImageWidth();
$height = $im->getImageHeight();

$canvas->newImage($width, $height, 'none');
$canvas->setImageFormat('png');

$canvas->compositeImage($im, imagick::COMPOSITE_SRCOVER, 0, 0);
$canvas->compositeImage($refl, imagick::COMPOSITE_SRCOVER, 20, $im->getImageHeight());
$canvas->writeImages("new.png", true);





Но почему-то при изменении цвета (к примеру, на blue) в этой строчке:


$gradient->newPseudoImage($refl->getImageWidth(), $refl->getImageHeight(), 'gradient:transparent-white');


Градиент по прежнему остаётся белым 😕



1662994050552.pngRoman Grudov · 12 Сен 2022 в 17:48' data-fancybox="lb-post-1144612" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/168296/" style="cursor: pointer;" title="1662994050552.png">
https://forum.antichat.xyz/attachments/28144612/

im0rg
13.09.2022, 07:01
PHP:






$refl
-
>
compositeImage
(
$gradient
,
imagick
:
:
COMPOSITE_DSTOUT
,
0
,
0
)
;




В данном коде тебе не позволяет константа COMPOSITE_DSTOUT добиться твоего эффекта, вот тебе список доступных https://www.php.net/manual/ru/imagick.constants.php#imagick.constants.compositeo p (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvcnUvaW1hZ2ljay 5jb25zdGFudHMucGhwI2ltYWdpY2suY29uc3RhbnRzLmNvbXBv c2l0ZW9w) , а так попробуй поставить к примеру COMPOSITE_DISSOLVE и увидишь эффект.

Так-же если у тебя ImageMagick 6.2.9 или выше можешь использовать setImageOpacity чтоб указать степень прозрачности наложения