Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP RGB dynamische Hintergrundfarbe errechnen

Frage Entwicklung PHP

Mitglied: Midivirus

Midivirus (Level 2) - Jetzt verbinden

06.08.2014, aktualisiert 12:05 Uhr, 1180 Aufrufe, 5 Kommentare, 1 Danke

Guten Morgen Gemeinde,

ich gebe euch mal meinen bisherigen Code vorweg:

01.
function rgb($intPct, $intPctM){ 
02.
	// round(max(0,255-(($intPct-0)*16.1))) 
03.
	$array = array
04.
	0=>array(0,255,0), 		//grün 
05.
	1=>array(15,255,0), 
06.
	2=>array(30,255,0), 
07.
	3=>array(45,255,0), 
08.
// schnipp 
09.
	13=>array(195,255,0), 
10.
	14=>array(210,255,0), 
11.
	15=>array(225,255,0),	//gelb 
12.
	16=>array(240,255,0), 
13.
	17=>array(255,255,0), 
14.
	18=>array(255,240,0), 
15.
	19=>array(255,225,0), 
16.
	20=>array(255,210,0), 
17.
	21=>array(255,195,0), 
18.
// schnipp 
19.
	31=>array(255,45,0), 
20.
	32=>array(255,30,0), 
21.
	33=>array(255,15,0), 
22.
	34=>array(255,0,0),		// rot 
23.
	35=>array(255,0,25), 
24.
	36=>array(255,0,50), 
25.
	37=>array(255,0,75), 
26.
	38=>array(255,0,100), 
27.
	39=>array(255,0,125), 
28.
	40=>array(255,0,150), 
29.
	); 
30.
		 
31.
	return(' style="background-color:rgb('.$array[$intPct][0].','.$array[$intPct][1].','.$array[$intPct][2].')" '); 
32.
}
Nachdem ich auf einer anderen Webseite ein Codeschnipsel mit in dieser Art gefunden hatte round(max(0,255-(($intPct-0)*16.1))) ist das okay, aber die Abstände sind ja dynamisch.
Meine Tabelle oben ist nur für den Übergang ... !

Die obige Funktion erzeugt dann eine schöne Farbskala:
a7d44500cad50bbbc1def80ca317c34f - Klicke auf das Bild, um es zu vergrößern


Mein Ziel ist es aber, aus einer Reihe von 5 Werten, wird der höchste mit 40 belegt und entsprechend prozentual die anderen angefärbt:
bdd7ed115311b9523f9deaddd676dcce - Klicke auf das Bild, um es zu vergrößern
Die Funktion bekommt den aktuellen Wert für die Hintergrundfarbe und den Maximalwert als Orientierung.

Excel kann das wunderbar, bislang fehlte mir aber noch eine nachvollziehbare Funktion hierfür.


Tipps zur Lösungsfindung wäre verdammt cool.
Mitglied: SlainteMhath
LÖSUNG 06.08.2014, aktualisiert um 13:23 Uhr
Moin,

das sollte sich mit einem Dreisatz lösen lassen
Pseudo Code
01.
ArrayElement=(MaximalWert/100) * (länge(array)/100)
Ohne Gewähr - hatte erst einen Kaffee heute

lg,
Slainte
Bitte warten ..
Mitglied: colinardo
LÖSUNG 06.08.2014, aktualisiert um 15:28 Uhr
Moin,
wie @SlainteMhath schon schreibt ist das mit einer einfachen Prozentrechnung erledigt. Hier ein Beispiel:
01.
<?php 
02.
function getColor($current,$max){ 
03.
	$intPct = round(($current / $max) * 100); 
04.
	$r=($intPct<50) ? round(min(255,$intPct*5.1 ))          :255; 
05.
	$g=($intPct>50) ? round(max(0,255-(($intPct-50)*5.1)))  :255; 
06.
	return $r.','.$g.',0'; 
07.
08.
function printArray(){ 
09.
	$arr = array(5,65,44,33,20,50,80); 
10.
	$max = max($arr); 
11.
	for($i = 0; $i < count($arr); $i++){ 
12.
		$out .= '<td style="text-align:center;width:50px;background-color:rgb('.getColor($arr[$i],$max).')">'. $arr[$i].'</td>'; 
13.
14.
	return $out; 
15.
16.
?> 
17.
<!DOCTYPE HTML> 
18.
<html> 
19.
<head> 
20.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
21.
<title> Color</title> 
22.
</head> 
23.
<body> 
24.
<table> 
25.
<tr><?php echo printArray(); ?></tr> 
26.
</table> 
27.
</body> 
28.
</html>
Viel Erfolg
Grüße Uwe
Bitte warten ..
Mitglied: Midivirus
06.08.2014, aktualisiert um 12:06 Uhr
Ich hab es so gelöst:

01.
function rgb($intPct, $intPctM){ 
02.
	$array = array
03.
	0=>array(0,255,0), 		//grün 
04.
	1=>array(15,255,0), 
05.
	2=>array(30,255,0), 
06.
//schnipp 
07.
	13=>array(195,255,0), 
08.
	14=>array(210,255,0), 
09.
	15=>array(225,255,0),	//gelb 
10.
	16=>array(240,255,0), 
11.
	17=>array(255,255,0), 
12.
	18=>array(255,240,0), 
13.
//schnipp 
14.
	32=>array(255,30,0), 
15.
	33=>array(255,15,0), 
16.
	34=>array(255,0,0),		// rot 
17.
//schnipp 
18.
	); 
19.
 
20.
	$intPct = round((count($array)-1)*($intPct/($intPctM/100))/100); 
21.
 
22.
	return('background-color:rgb('.$array[$intPct][0].','.$array[$intPct][1].','.$array[$intPct][2].'); color:black;'); 
23.
}
Bitte warten ..
Mitglied: colinardo
06.08.2014 um 13:15 Uhr
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.
Bitte warten ..
Mitglied: Midivirus
06.08.2014, aktualisiert um 13:24 Uhr
... ich vergess das immer wieder
Bitte warten ..
Ähnliche Inhalte
PHP
gelöst PHP Key - Value Dictionary in einer Schleife erzeugen (3)

Frage von facebraker zum Thema PHP ...

HTML
PHP Datei für das ABI (7)

Frage von mrcljnff zum Thema HTML ...

PHP
Empfehlung php Framework mit Material Design (5)

Frage von Androxin zum Thema PHP ...

C und C++
C-sharp soll Datei von PHP speichern (3)

Frage von Yanmai zum Thema C und C ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Windows Systemdateien
NTFS und die Defragmentierung (26)

Frage von WinLiCLI zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Zwei Subnetze mit je eigenem Router und Internetzugang verbinden (18)

Frage von hannsgmaulwurf zum Thema LAN, WAN, Wireless ...

Windows Server
WIndows Server 2016 core auf dem Intel NUC NUC5i5RYK i5 5250U (17)

Frage von IxxZett zum Thema Windows Server ...