Top-Themen

Aktuelle Themen (A bis Z)

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, 1210 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
Server-Hardware
ServerraumTemperatur errechnen!
gelöst Frage von NewesseServer-Hardware9 Kommentare

Guten Tag, ich habe ein kleines Problem, undzwar soll ich belegen, dass in einem Serverraum eine der 2 dort ...

PHP
PHP - Dynamische Keys für multidimensionale Arrays
gelöst Frage von justanumber44PHP10 Kommentare

Hallo mal wieder. Ich suche eine "bessere" Möglichkeit, gegebene Schlüssel an gegebene Positionen in Arrays zu setzen. Das Eingangsformat ...

Microsoft Office
Hintergrundfarbe in Exel Fenster ändern
Frage von Michael71Microsoft Office1 Kommentar

Guten Morgen zusammen, ich habe ein Programm das mit Excel arbeitet. Bei einer Anwendung popt ein 2. Fenster auf ...

LAN, WAN, Wireless
Minimale erforderliche Datenrate errechnen
Frage von killtecLAN, WAN, Wireless2 Kommentare

Hallo zusammen, weiß jemand wie ich die minimale Datenrate, die ich min. im Upstream haben muss, wenn ich einen ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 41 MinutenInternet1 Kommentar

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 4 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 4 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 7 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement18 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...