D'accord, j'ai piraté avec GD Image pendant quelques mois, et une tâche que je voulais accomplir avec était de créer un script qui prend une image existante, puis crée une réflexion qui s'efface pour devenir translucide en dessous.
Le guide suivant montre comment le faire avec une couleur opaque: TalkPHP Forums Link
Dans ce forum, Rendair décrit un moyen de superposer un gradient dessiné dynamiquement en utilisant une couleur, avec le code PHP suivant:Réflexion d'image translucide en PHP GD
// Next we draw a GD line into our gradient_line
imageline ($gradient_line, 0, 0, $imgName_w, 0, $gdGradientColor);
$i = 0;
$transparency = 30; //from 0 - 100
while ($i < $gradientHeight) //create line by line changing as we go
{
imagecopymerge ($background, $gradient_line, 0,$gradient_y_startpoint, 0, 0, $imgName_w, 1, $transparency);
++$i;
++$gradient_y_startpoint;
if ($transparency == 100) {
$transparency = 100;
}
else
{
// this will determing the height of the
//reflection. The higher the number, the smaller the reflection.
//1 being the lowest(highest reflection)
$transparency = $transparency + 1;
}
}
Ce que j'essaye d'accomplir est un effet où nous avons uniformisé chaque ligne à une ombre plus translucide en utilisant la fonction alpha, mais il semble que j'ai du mal à l'appliquer une ligne à la fois. Jusqu'à présent, je ne peux que faire une petite tranche de l'image (une ligne de large) et ensuite superposer avec de la translucidité, je ne peux pas sembler fondre chaque ligne un peu plus. Donc, mon résultat devrait être l'image initiale, puis une copie réfléchie qui passe à 100% alpha transparent, mais je ne peux pas sembler accomplir cela.
Tous les gens de PHP là-bas qui ont des idées de génie?
Mise à jour: cette question m'a valu l'insigne tumbleweed.
C'est une idée très cool et je _think_ j'ai une solution pour elle ... Je vais tester du code et revenir. – shadowhand
Oh, j'aurais dû demander ... voulez-vous doubler la hauteur de l'image (image standard ci-dessus, réflexion flipped et fané ci-dessous)? – shadowhand
L'un ou l'autre irait bien. Peut-être la compresser à la moitié de la taille, tout ce qui est plus facile. Je n'arrive pas à comprendre comment appliquer un masque, ou si vous devez le restituer une ligne à la fois et baisser l'opacité à chaque fois ou utiliser une fonction logarithmique pour le faire en douceur ou quelque chose, mais mon problème est que je Je ne peux jamais sembler le faire passer la ligne, je dois écrire quelque chose de telle sorte que c'est seulement interperer une copie. – NateDSaint