Skip to content
Extraits de code Groupes Projets
Valider 5b0d9a33 rédigé par cerdic's avatar cerdic Validation de marcimat
Parcourir les fichiers

feat: une fonction svg_filter_colorize() pour modifier les composantes RGB...

feat: une fonction svg_filter_colorize() pour modifier les composantes RGB d'un SVG (analogue au filtre colorize GD2)
parent 1af61ce4
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Ce commit fait partie de la requête de fusion !28. Les commentaires créés ici seront créés dans le contexte de cette requête de fusion.
......@@ -587,11 +587,34 @@ function svg_filter_blur($img, $blur_width) {
*/
function svg_filter_grayscale($img, $intensity) {
$value = round(1.0 - $intensity, 2);
//$filter = "<feColorMatrix type=\"matrix\" values=\"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"/>";
$filter = "<feColorMatrix type=\"saturate\" values=\"$value\"/>";
return svg_apply_filter($img, $filter);
}
/**
* Filtre colorize en utilisant <filter>
* Les valeurs en entrées vont de -255 à +255
* et sont transformées en coefficient multiplicateur d'une matrice feColorMatrix pour avoir un rendu couleur semblable à GD2
* @param string $img
* @param int $red
* @param int $green
* @param int $blue
* @return bool|string
*/
function svg_filter_colorize($img, $red = 0, $green = 0, $blue = 0) {
$rgb = [$red, $green, $blue];
foreach ($rgb as &$value) {
if ($value > 0) {
$value = 1 + round(pow($value, 2) / 20, 2) / 100;
} else {
$value = 1 / (1 + round(pow(-$value, 1.5) / 4, 2) / 100);
}
}
[$red, $green, $blue] = $rgb;
$filter = "<feColorMatrix type=\"matrix\" values=\"$red 0 0 0 0 0 $green 0 0 0 0 0 $blue 0 0 0 0 0 1 0\"/>";
return svg_apply_filter($img, $filter);
}
/**
* Filtre sepia en utilisant <filter>
*
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter