# Farbverlauf mit PHP



## skydragon (18. Juli 2006)

Hallo ich hab folgendes Skript im Netz gefunden

```
$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?


----------



## hubeR83 (18. Juli 2006)

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!


```
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 ...


----------



## romolus (25. November 2006)

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


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

Und


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

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

Vielen Dank

mfg


----------



## Hirnhamster (26. November 2006)

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?


----------



## romolus (27. November 2006)

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 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.


----------



## DivDax (18. April 2010)

Ich würde diesen Farbverlauf mit PHP gerne mit 3 anstatt 2 Farben realisieren, bekomme es aber irgendwie nicht hin.
Jemand eine Ahnung?


----------



## CookieBuster (18. April 2010)

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..


----------



## DivDax (18. April 2010)

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?


----------



## Johnny B Good (18. April 2010)

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!


----------



## Cromon (18. April 2010)

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 ):
$g = round(255 * ((3 - $note) / 2));
$b = round(255 * (($note - 1) / 2));
$r = 0;

Analog für die andere "Seite".


----------



## Crazynet (11. Oktober 2010)

Ich hol man den Threat wieder hoch.

Ich suche nämlich so eine Funktion (Farbverlauf), die mit Farben ($colora & $colorb) eine Ecke mir herstellt.

Kann mir da jmd helfen?


----------



## MC-René (12. Oktober 2010)

> eine Ecke mir herstellt.



Etwas genauer sollte Deine Frage schon sein...


----------



## Crazynet (12. Oktober 2010)

So, nur mit dem Farbverlauf-Script und für alle 4 Ecken 
Ist das möglich?


----------

