Мне нужно изменить цвет с помощью PHP и Imagick в изображении SVG.Everythink работает хорошо, но полупрозрачные пиксели не меняют цвет, что мне нужно.
Я смотрел в основном на сайте об этой проблеме, но все написали для формата PNG.Кто-нибудь сталкивался с этой проблемой?
$baseFolder = $_SERVER['DOCUMENT_ROOT'] . '/recolor_icons/';
$baseName = basename($imageSvgFile, '.svg');
$suffixSvg = pathinfo($imageSvgFile, PATHINFO_EXTENSION);
if($suffixSvg !== 'svg' || !file_exists($baseFolder . $baseName)) {
$image = new Imagick();
$image->setBackgroundColor(new ImagickPixel('transparent'));
$image->readImage($imageSvgFile);
$image->setImageAlphaChannel(Imagick::ALPHACHANNEL_DEACTIVATE);
$source = "rgba(227, 6, 19)";
$fill = "rgba(255, 255, 255)";
$image->opaquePaintImage($source, $fill, 0, false);
$image->setImageAlphaChannel(Imagick::ALPHACHANNEL_ACTIVATE);
$hoverName = $baseName . '_hover.';
$image->despeckleimage();
$image->writeImage($baseFolder . $hoverName . $suffixSvg);
$svg_file = file_get_contents($baseFolder . $hoverName . $suffixSvg);
$replaceSvg = str_replace('<svg ', '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ', $svg_file);
file_put_contents($baseFolder . $hoverName . $suffixSvg, $replaceSvg);
return '/recolor_icons/' . $hoverName . $suffixSvg;
}
Это должно выглядеть так: это
Но теперь это выглядит как this
Можеткто-нибудь, помогите мне, пожалуйста?