Farbe dynamisch verändern

DiZZa

Grünschnabel
Hi,

Ich brauche Hilfe bei einem PHP Code! Ich weis nicht wie ich das realisieren soll!

Hier mal das was ich machen will:

Es werden 2 variablen übergebe, die erste eine hex-farbvariable, eine zweite, welche sich zwischen 0 und 100 befindet.
Die funktion soll dann den gegebenen farbcode verändern
und zwar je höher der 2. wert, umso mehr soll der farbcode verändert werden.
Alles unter 10 sollte die farb nicht verändern, alles darüber sollte die farbe ändern. Aber es sollten zufällige farben sein und je höher die 2. var ist, umso mehr sollte es verändert werden.

Hoffe mal das ihr mir weiter helfen könnt!

Mfg DiZZa
 
Hi.


Dein Problem wird sich von selbst lösen, wenn du Hexwerte als solche verstanden hast (0 - F) und den Zusammenhang der RGB-Farbpalette.

Den RGB-Wert kannst du nach dem übergeben auf R, G und B aufteilen und dann entsprechend dem Wert 2 erhöhen. Ob du dabei den höchsten der RGB Werte am meisten erhöhst um der Farblinie treu zu bleiben ist dann wieder dein Bier.

Grüße, Ronin
 
Ja mit Hexwerten mein ich dies z.B. #000000

Wie kann ich aus den Hexwerten den RGB Wert auslesen? Und wie kann ich den dann aufteilen?

Mfg DiZZa
 
Mit substr() ist es wohl die einfachste Art und weise den String aufzuteilen...
dann gibt es eine funktion die hexdec() und eine dechex() zum wandeln hexadezimal <-> Dezimal. Mit rand() kann man dann zahlen zum verändern des Farbwertes berechnen. Oder du nimmst feste Additionen / Subtraktionen.

Ein Beispielcode wie so etwas aussehen könnte währe das hier:

PHP:
$color = 'CCCCCC';
$range = 50;

$r		= hexdec(substr($color, 0, 2));
$g		= hexdec(substr($color, 2, 2));
$b		= hexdec(substr($color, 4, 2));

$r		= $r + rand($range * -1,$range);
$g		= $g + rand($range * -1,$range);
$b		= $b + rand($range * -1,$range);

$r		= dechex(max(0, min(255, $r)));
$g		= dechex(max(0, min(255, $g)));
$b		= dechex(max(0, min(255, $b)));

echo '<body bgcolor="#'.$r.$g.$b.'">#'.$r.$g.$b.'</body>';
 
Ich hab den Code jetzt mal angepasst! Und es geht auch alles! Danke für die Hilfe!

Hier mal der Code wie ich ihn angepasst hab:
PHP:
<?
$hex = $_POST['hex'];
$zahl = $_POST['Zahl'];
if ($zahl < 10) {
$plus = rand(10 ,100);
$zahl = $zahl + $plus;
}

$r = hexdec(substr($hex, 0, 2));
$g = hexdec(substr($hex, 2, 2));
$b = hexdec(substr($hex, 4, 2));

$r = $r + rand($zahl * -1,$zahl);
$g = $g + rand($zahl * -1,$zahl);
$b = $b + rand($zahl * -1,$zahl);

$r = dechex(max(0, min(255, $r)));
$g = dechex(max(0, min(255, $g)));
$b = dechex(max(0, min(255, $b)));

$ausgabe = "Die neue Hexdezimalzahl ist: #".$r.$g.$b.".";
echo $ausgabe;
?>

mfg DiZZa
 
Zuletzt bearbeitet:
So hab es jetzt geändert! Bei mir im Script hatte ich es schon geändert! War nur hier mit dem schreiben schneller gewesen! :-)

Mfg DiZZa
 
Zurück