Farbverlauf mit PHP

skydragon

Mitglied
Hallo ich hab folgendes Skript im Netz gefunden
PHP:
$h=600; //Höhe des Farbverlaufes in Pixel

//Startfarbe im RGB Format
$r1 = 161; //R
$g1 = 161; //G
$b1 = 161; //B

//Endfarbe im RGB Format
$r2 = 255; //R
$g2 = 255; //G
$b2 = 255; //B

$s  = array($r1,$g1,$b1);
$e  = array($r2,$g2,$b2);

for ($i = 0; $i<$h; $i++) {
    $c1 = max(0,$s[0]-((($e[0]-$s[0])/-$h)*$i));
    $c2 = max(0,$s[1]-((($e[1]-$s[1])/-$h)*$i));
    $c3 = max(0,$s[2]-((($e[2]-$s[2])/-$h)*$i));
    
    echo "<div style=\"clear:left; font-size:0px; top:".$i."px; left:0px; height:1px; width:600px; border:0px; background-color:rgb(".round($c1,0 ).", ".round($c2, 0).", ".round($c3,0 ).");\"></div>\n";
}

für meine Zwecke ist das super nur gibt es da ein Problem:
Das Skript baut einen senkrechten Farbverlauf, ich benötiege aber einen waagerechten.
Hat einer eine Idee?
 
Dafür musst du nur den div-Tag abändern. Dieser sollte dann nur noch 1px breit sein, so hoch wie du ihn brauchst und links oder rechts floaten!

PHP:
echo "<div style=\"float:left; font-size:0px; height:600px; width:1px; border:0px; background-color:rgb(".round($c1,0 ).", ".round($c2, 0).", ".round($c3,0 ).");\"></div>\n";
zum Beispiel ...
 
Hi Mitglieder ;) ,

Ich habe auch das obenstehende Script für den Farbverlauf verwendet es auch ganz gut.

Nur habe ich ein kleines Problem, ich möchte diesen Farbverlauf nicht in einen Div-Container einbinden, sondern in Tabellenspalten als Hintergrund...

Ich habe schon versucht es einzubinden aber es irgendwie nicht..
Ich habe versucht die Farbverlaufausgabe in eine Variable zu schreiben, dass es ein bisschen übersichtlicher wird ($color), und dann diese Variable in die Tabelle eingefügt in der Hoffnung dass dann der Farbverlauf als Hintergrund angezeigt wird

Code:
<?
$color = rgb(".round($c1,0 ).", ".round($c2, 0).", ".round($c3,0 ).");
?>

Und

Code:
<td  bgcolor="<? echo $color ?>">&nbsp;</td>

Kännte mir da jemand bitte auf die Sprünge helfen ;-)

Vielen Dank

mfg
 
Das obige script erzeugt für jede nuance der Farbe einen eigenen div Container, bei einer Tabelle müsstest du dafür jeweils eine neue Tabellenzelle erstellen und dieser dann den Hintergrund zuweisen. Würde dir aber eher empfehlen, einfach nen Verlauf mit nem Graphik Programm zu erzeugen und den dann als Hintergrundgrafik einzufügen

Kleine Frage nebenbei, wozu soll es gut sein, das als Tabelle zu realisieren?
 
hi,

ja, das habe ich auch gesehen, dass das mit den div-Containern realisiert wird.
Ich möchte mit Templates arbeiten und dann soll der User ganz eifach die Farbe(n) eingeben können um dann das Design anpassen zu können. So sollten dann die Tabellenzellen eben so mit einem Farbübergang gefüllt werden!
Und der User kann die Füllfarbe auswählen und deshalb will ich es auch nicht mit einer Grafik realisieren ;) eingermassen verstanden?

Aber eben ich weiss nicht so recht wie das machbar wäre

mfg


PS: Es geht rein um das Design, es sieht optisch gut aus, finde ich und es sollte eben leicht anpassbar sein. Ich dachte zuerst, dass es mit PHP möglich wäre, damit der Farbübergang berechnet wird und dann als Hintergrund gewählt werden kann.
 
Ich würde diesen Farbverlauf mit PHP gerne mit 3 anstatt 2 Farben realisieren, bekomme es aber irgendwie nicht hin.
Jemand eine Ahnung?
 
Ah, mal wieder ein seehr alter Thread ausgegraben worden...

Wie meinst du das, mit 3 Farben? Ein Farbverlauf besteht aus sehr vielen Farben nicht nur zweien..
 
Ich beschreibe mein Problem mal etwas genauer.

Und zwar habe ich zur Bewertung ein Schulnotensystem von 1-6.
Nun möchte ich für die visuelle Darstellung drei Grundfarben benutzen.
1 = grün, 3 = gelb, 6 = rot

Für die dazwischenliegenden Noten wie z.B. 2,1 - 2,5 - 4,4 etc.
möchte ich nun die entsprechenden Farbwerte berechnen.

Ne Idee? :)
 
Also die einfachste Lösung die mir da einfällt wäre, dass du mit ner if-Abfrage schaust obs zwischen 1 - 3.5 oder 3.5 -6 liegt und dann zwei zweifarbige Verläufe machst der eine von grün (1) bis gelb(3.5) und der andere von gelb(3.5) bis rot (6).
Hoffe das löst dein Problem! :)
 
Eine Variante wäre, dass du zuerst schaust ob deine Note zwischen 1 und 3 oder zwischen 3 und 6 ist.

Im ersten Fall kannst du den Farbewert folgendermassen ermitteln zum Beispiel (ich hab statt gelb mal blau genommen, damits bisschen einfacher wird :p):
$g = round(255 * ((3 - $note) / 2));
$b = round(255 * (($note - 1) / 2));
$r = 0;

Analog für die andere "Seite".
 
Zurück