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

aus Prozentwert Farbwert ermitteln

Frage Entwicklung PHP

Mitglied: Closed

Closed (Level 1) - Jetzt verbinden

14.09.2008, aktualisiert 16.09.2008, 6658 Aufrufe, 6 Kommentare

Hallo,

ich möchte gerne aus einem übergebenen Prozentwert (o bis 100) einen Farbwert ermitteln. 0 sollte rot sein und 100 sollte grün sein. Ich weiß nicht genau, wie ich die Abstufungen hinbekomme. Ich kann ja unmöglich 100 switch case Anweisungen machen. Gibt es da einen anderen Weg? Google gibt leider auch nichts vernünftiges raus, oder ich suche falsch

danke schon mal
Mitglied: SarekHL
14.09.2008 um 18:21 Uhr
ich möchte gerne aus einem übergebenen Prozentwert
(o bis 100) einen Farbwert ermitteln. 0 sollte rot
sein und 100 sollte grün sein.

Und dazwischen? Willst du den Weg über blau und violett gehen oder über orange und gelb? Oder einen direkten Rot-zu-Grün-Farbverlauf? Du mußt ja erst mal einen Algorhythmus entwicklen, der die linearen Werte von 0 bis 100 in die dreidimensionale RGB-Farbskala umsetzt.
Bitte warten ..
Mitglied: Closed
14.09.2008 um 18:31 Uhr
naja genau darum geht es. gibt es da eventuelle standard-lösungen für? das kann ja kein an den haaren herbeigezogenes problem sein. denke das sollte sicherlich öfters auftauchen.
würde wahrscheinlich einen rot zu grün farbverlauf wählen. natürlich dann von dunkelrot bis hellgrün.

und ich habe bisher keinen wirklichen ansatz, wie ich die prozentwerte in rgb werte umwandeln kann
Bitte warten ..
Mitglied: filippg
14.09.2008 um 18:48 Uhr
Hallo,

ich weiß nicht, ob da etwas taugliches rauskommt. Aber versuchen würde ich mal folgendes:
Farbangaben können ja in RGB gemacht werden (Rot, Grün, Blau), damit bieten sich die von dir gewählten Farben ja an. Im allgemeinen kann jeder Farbwert von 0-255 annehmen. Blau ignorieren wir jetzt erstmal. Dann kannst du einfach rechnen:
0% sollen Rot entsprechen, also R:255, G:0
100%: R:0, G:255.
50%: von jeder Farbe 50% des Maximalwerts, also R:255*0,5, G:255*0,5.
30%: 70% Rot, also 255*0,7, 30% Grün, also 255*0,3
Blau würde dabei erstmal außer Acht gelassen. Das könnte man einfach auf etwa 126 setzen, damit die Farben nicht zu dunkel sind, evtl muss man da noch etwas mehr Berechnungen machen (z.B. für 50% etwa auf voll setzen, für 0% und 100% auf null setzen, dazwischen irgendeine Hüllkurve).

Gruß

Filipp

Edit: Nur um das deutlich zu machen: Das ist ein Ansatz ohne Switch, sondern zum Rechnen:
Rot = 255 * (1-Prozent)
Grün = 255 * Prozent
Prozent als Zahlenwert angegeben, also 100% = 1
Bitte warten ..
Mitglied: filippg
14.09.2008 um 18:58 Uhr
Hallo,

übrigens habe ich keine Ahnung, wie du auf die Idee kommst, eine Suchmaschine würde nichts vernünftiges liefern. "farbverlauf berechnen" ergibt auf der ersten Seite jede Menge. Z.B. ein PHP-Tutorial: http://www.sansiba.de/tut_farbverlauf.htm und auch jede Menge weitere Diskussionen und Tutorials dazu. Interessanter Ansatz über Farbkreise z.B. http://www.pepto.de/projects/colorvic/

Gruß

Filipp
Bitte warten ..
Mitglied: Closed
14.09.2008 um 19:23 Uhr
super. vielen dank filipp. werde mir das direkt mal anschauen. meldemich dann wieder

Nachtrag: leider hat das auch nicht viel geholfen. ich werde jetzt zuder unschönen switch case lösung übergehen, da ich das doch recht dringend benötige. falls es doch eine bessere variante gibt, werde ich es darauf umstellen, aber vorerst belasse ich es dabei.

danke für die hilfe
Bitte warten ..
Mitglied: Guenni
16.09.2008 um 20:26 Uhr
Hi Closed,

der Ansatz von filipp ist doch zum Probieren schon mal ganz gut:
Der hundertste Teil von 255 ist 2,55, also die Abstufung je Prozentpunkt.
Wenn du nun einen Prozentwert 75% übergibst, so erhält Grün die 75x2,55 und
Rot 25x2,55. Kommazahlen sind natürlich schlecht, die Ergebnisse werden mit
round gerundet. Aus den Ergebnissen läßt du dir mit der Funktion sprintf die
Hex-Schreibweise für die HTML-Ausgabe erstellen. Einfaches Beispiel:
01.
<form action="" method="post"
02.
<input type="text" name="input"/> 
03.
<input type="submit" name="cmd"/> 
04.
</form> 
05.
<? 
06.
$schritt=2.55; 
07.
if(isset($_POST['cmd'])){ 
08.
 $gruen=$_POST['input']; 
09.
 $rot=100-$gruen
10.
 $color=sprintf("#%02X%02X00",round($rot*$schritt),round($gruen*$schritt)); 
11.
 echo "<h3><font color=$color>Text</font></h3><br><br>"
12.
13.
//Gesamter Farbverlauf 
14.
$i=0; 
15.
for($rot=100,$gruen=0;$rot>=0,$gruen<=100;$rot--,$gruen++){ 
16.
 $fcolor=sprintf("#%02X%02X00",round($rot*$schritt),round($gruen*$schritt)); 
17.
 if($color==$fcolor){ 
18.
  echo "<font color=$fcolor; size=+2>-->Text  </font>"
19.
 }else
20.
 			 echo "---<font color=$fcolor size=+2>  Text  </font>"
21.
22.
 $i++; 
23.
 if($i%10==0)echo "<br>"
24.
25.
?>

Gruß
Günni
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
DNS
Hostnames für mehrere IPs ermitteln (3)

Frage von Oneil-1989 zum Thema DNS ...

Mac OS X
gelöst 500 Wordfiles die jeweilige Anzahl an Wörtern ermitteln (26)

Frage von xp-user zum Thema Mac OS X ...

Router & Routing
gelöst Netzwerkbelastung ermitteln (6)

Frage von Azubine zum Thema Router & Routing ...

Windows Installation
gelöst Win10 Build einer Installations-ISO ermitteln (9)

Frage von chiefteddy zum Thema Windows Installation ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...