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, 1170 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 Wie updatet man Php ab auf Windows ? (5)

Frage von rainergugus zum Thema PHP ...

Exchange Server
gelöst Dynamische Verteilerliste nach Domain filtern (2)

Frage von blackhawk17 zum Thema Exchange Server ...

Batch & Shell
gelöst Batch - PHP - W10 - w7 - w2k8r2 (4)

Frage von Xaero1982 zum Thema Batch & Shell ...

Microsoft Office
gelöst Dynamische tabellen erstellen und in einanderes arbeitsblatt kopieren (18)

Frage von hugothemagpie zum Thema Microsoft Office ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(8)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte