Archivlink: javarea.de Forum > JavaScript > background-color fading (2farben & prozentangabe)
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > background-color fading (2farben & prozentangabe)

Pages: [1]

geschrieben von okley am 24.05.2005 - 19:20
hi zusammen

ich suche eine "zwei-farben-fading" funktion. ich möchte also als parameter startfarbe, endfarbe, prozent mitgeben, und das scriptgibt mir die entsprechende (der ton wird der startfarbe entsprechend der prozentangabe der endfarbe angenähert) farbe zurück.

ich habe im internet nichts würklich nützliches gefunden, was aucheinwandfrei funktioniert hätte ....

kennt ihr sowas? oder wisst wies geht ?

PS: das tönt interessant:
http://www.w3.org/TR/WD-css1-951209....background

geschrieben von Klaush am 31.05.2005 - 19:15
Habe auch nichts gefunden, interessiert bin ich aber auch.

Wenn du was finden solltest, dann poste mal bitte!

geschrieben von okley am 31.05.2005 - 19:29
ich habe schon eine funktion, aber irgendwie stimmt die nicht ganz, das ergebnis ist nur immer verfälscht, das heisst der hexcode zu lange, und wenn ich ihn kürze ist er logischerweise falsch.

PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 

<?
/**
         * Function : getColor
         * 
         * Parameters : 
         * start - the start color (in the form "RRGGBB" e.g. "FF00AC")
         * end - the end color (in the form "RRGGBB" e.g. "FF00AC")
         * percent - the percent (0-100) of the fade between start & end
         * 
         * returns : color in the form "#RRGGBB" e.g. "#FA13CE"
         * 
         * Description : This is a utility function. Given a start and end color and
         * a percentage fade it returns a color in between the 2 colors
         * 
         * Changed by Ueli Kunz from javascript into php, the orginal:
         * http://www.codingforums.com/archive....-4656.html  
         */
    
function getColor($start$end$percent)
    {
        
$r1 hexdec(substr($start02));
        
$g1 hexdec(substr($start24));
        
$b1 hexdec(substr($start46));

        
$r2 hexdec(substr($end02));
        
$g2 hexdec(substr($end24));
        
$b2 hexdec(substr($end46));

        
$pc $percent 100;

        
$r floor($r1 + ($pc * ($r2 $r1)) + 0.5);
        
$g floor($g1 + ($pc * ($g2 $g1)) + 0.5);
        
$b floor($b1 + ($pc * ($b2 $b1)) + 0.5);
        
//$r = floor(($r2-$r1)/

        
return "#" dechex($r) . dechex($g). dechex($b);
    }
?>



ich probierte es z.b. mit den werten:
$fade1 = '336600'; // Farbe Anfang (schlecht)
$fade5 = 'FF9933'; // Farbe Ende (gut)
und die prozente sind 0,20,60,80. die ausgabewerte zu den jeweiligen prozenten sind:
#3366000;
#2c83841d7;
#25a1083ae;
#1dbe8b585;
#16dc0f75c;
dies ja eindeutig zu lange sind ;). lasse ich '. dechex($b)' weg, wird eine farbe zurückgegeben, die dann aber nicht stimmt. ich wessnicht wo der fehler liegt, kenne mich damit nicht wirklich aus...

geschrieben von okley am 31.05.2005 - 21:17
die rückgabewerte stimmen bei mir noch immer nicht .
ich bekomme jetzt
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
Array
(
    [1] => #5b70a
    [2] => #847a14
    [3] => #ad841e
    [4] => #d68e28
    [5] => #ff9933
)
//input:
$fade1 = '336600'; // Farbe Anfang (schlecht)
$fade5 = 'FF9933'; // Farbe Ende (gut)
//die prozentzahlen sind 20 40 60 80 100


liegt der fehler bei mir, oder ist die funktion noch immer falsch :$ ?

geschrieben von René am 31.05.2005 - 22:46
PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 

<?php

/**
* Function : getColor
*
* Parameters :
* start - the start color (in the form "RRGGBB" e.g. "FF00AC")
* end - the end color (in the form "RRGGBB" e.g. "FF00AC")
* percent - the percent (0-100) of the fade between start & end
*
* returns : color in the form "#RRGGBB" e.g. "#FA13CE"
*
* Description : This is a utility function. Given a start and end color and
* a percentage fade it returns a color in between the 2 colors
*
* Changed by Ueli Kunz from javascript into php, the orginal:
* http://www.codingforums.com/archive/index.php/t-4656.html  
**/

function getColor($start$end$percent)
{
    
$r1 hexdec(substr($start02));
    
$g1 hexdec(substr($start22));
    
$b1 hexdec(substr($start42));

    
$r2 hexdec(substr($end02));
    
$g2 hexdec(substr($end22));
    
$b2 hexdec(substr($end42));

    
$pc $percent 100;

    
$r floor($r1 + ($pc * ($r2 $r1)));
    
$g floor($g1 + ($pc * ($g2 $g1)));
    
$b floor($b1 + ($pc * ($b2 $b1)));

    return 
'#' sprintf('%02x'$r) . sprintf('%02x'$g) . sprintf('%02x'$b);
}

/**/

$percent = array(20406080100);

foreach (
$percent as $elem)
    echo 
getColor('336600''ff9933'$elem) . "<br />\r\n";

?>


geschrieben von okley am 31.05.2005 - 22:50
danke, jetzt geht es prima

geschrieben von René am 31.05.2005 - 23:03
Ich möchte jetzt aber wenigstens von dir wissen an was der Fehler zum Code unten lag!

Zitat
  Original geschrieben von okley am 31.05.2005 - 19:29

#3366000;
#2c83841d7;
#25a1083ae;
#1dbe8b585;
#16dc0f75c;

geschrieben von okley am 31.05.2005 - 23:25
von mir? hehe, ich versuchs mal ...

1. ich denke ich habe die parameter von substr() nicht richtig angeschaut. ich hab von zeichenindex 2 4 zeichen ausgelesen, dabei sollte ich von zeichenindex 2, 2 weitere zeichen einlesen.
2. der nächste fehler lag in der ausgabe der hexzahlen.
mit %02x geb ich an, dass eine integerzahl als hexwert zweistellig dargestellt wird.

php.net/sprintf
php.net/substr


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.