Community

9dots.de Webdesign Board

 

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 

 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 


Mit PHP RGB-Farbangaben in Hexadezimal-Code umwandeln

 
Neues Thema erffnen   Neue Antwort erstellen    9dots.de Webdesign Community Foren-bersicht -> Coding-Tutorials
Vorheriges Thema anzeigen :: Nchstes Thema anzeigen  
Autor Nachricht
lennART h.
Mitglied
Mitglied


Angemeldet: 13.04.2006
Beitrge: 75
Wohnort: Kiel

BeitragVerfasst am: 13.04.2006, 20:03    Titel: Mit PHP RGB-Farbangaben in Hexadezimal-Code umwandeln Antworten mit Zitat
Hallo,

im folgenden eine kleine Funktion, die aus RGB-Farbangaben einen gltigen Hexadezimal-Code erstellst.
Die zu benutzenden PHP-Funktionen:
dechex - Umwandlung einer Zahl in Hex-Code.
strlen - Anzahl der Buchstaben in einer Zeichenkette.
strtoupper - Wandelt alle Buchstaben in einer Zeichenkette in Groebuchstaben um.

1. Einleitung:
Da ich die gesamte Funktionsweise besser gesagt den genauen Ursprung des Hexdezimalen Systems nun hier nicht hinkopieren will, denn das wrde ich so oder so tun, hier ein Link, der dieses System hoffentlich genug und gut erklrt:
http://de.wikipedia.org/wiki/Hexadezimalsystem

Die Hexdezimale Angabe fr eine Farbe ist meist einfacher und bersichtlicher. Da viele Grafikprogramme diesen Code ebenso kennen wie RGB-Farbangaben, steht vorallem die bersichtlichkeit im Vordergrund.

2. Umwandlung
Um nun unsere RGB, also Rot-, Grn- und Blau-Anteile der Farbe in Hexdezimalen umzuwandeln, reservieren wir uns im Kopf ersteinmal fr jeden Anteil einen zweistelligen Bereich in unserem Hexdezimalen-Code, kurz Hex-Code. Das beruht auf der Gre einer mglichen Farbangabe. Das Maximum liegt bei 255, somit bentigen wir nciht mehr als zwei Zeichen im Hex-Code.

Zu aller erst, werden die verschiedenen Anteile in die Funktion geben und mit dechex in Hex-Code umgewandelt. Dabei bergeben wir die einzellnen Hexdezimal Zahlen in Arrays, damit wir sie spter einzellend in der foreach()-Schleife verarbeiten knnen. Die Funktion selber nennen wir rgb2hex, wobei dieser Name natrlich vllig optional ist.
Somit haben wir folgenden Code:

Code:
function rgb2hex($red,$green,$blue) {
   $color[] = dechex($red);
   $color[] = dechex($green);
   $color[] = dechex($blue);
}


Es ist zu beachten, dass ein Hex-Code fr Farbangaben 6 stellig sein muss. Das heist, wenn die Umwandlung nur ein Zeichen ausgibt, weil der Farbanteil entsprechend gering ist, muss eine Null davor gestellt werden, um diesen Fehler zu vermeiden. Dies lsen wir mit strlen. Sie berprft die Lnge der Zeichenkette. Sollte sie zu kurz ausfallen, stellen wir einfach eine "0" vor den enstanden Code.
Dies geschieht in einer foreach Schleife, die fr jede Farbe, also fr jedes $color-Array den Bereich im Hex-Code an die Variable $hex_string mit ".=" anhngt. Die Schleife funktioniert so, dass sie das jeweilige Array nimmt und eine "Platzhalter-"Variable erstellt, die mit dem jeweiligen Arraywert gefllt ist. Nach jedem Durchlauf wird der Zeiger dann immer auf das nchste Array gesetzt, sodass das nchste Array verarbeitet werden kann, sollte dieses vorhanden sein.
Vor dieser Schleife erstellen wir noch eine leere Variable, die wir nun mit Hex-Code auffllen und spter mi t return ausgeben. (Hier noch mal Danke an rey fr die seltsam freundliche Hilfe Auf den Arm nehmen )
Somit ist sieht unser Code nun wie folgt aus:

Code:
function rgb2hex($red,$green,$blue) {
   $color[] = dechex($red);
   $color[] = dechex($green);
   $color[] = dechex($blue);
   $hex_str = '';
   foreach($color as $value) {
      if(strlen($value) == 1) $value = '0'.$value;
   }
   return $hex_str;
}


Am Ende wandeln wir schnheitshalber noch in eine nettere Darstellung um, in dem wir alle Buchstaben in Grobuchstaben umwandeln. Dies geschieht mit strtoupper.
Somit haben wir unseren fertige Funktion, die nun schlussendlich wie folgt aussachaut:

Code:
function rgb2hex($red,$green,$blue) {
   $color[] = dechex($red);
   $color[] = dechex($green);
   $color[] = dechex($blue);
   $hex_str = '';
   foreach($color as $value) {
      if(strlen($value) == 1) $value = '0'.$value;
      $hex_str .= strtoupper($value);
   }
   return $hex_str;
}


3. Schlusswort:
Jedem sollte auffallen, dass wir hier eine sehr simple Funktion gebaut haben. Ein guter Grund, sich eigene kleine Extras zu berlegen und einzubauen, wie zum Beispiel das Umwandeln in Grobuchstaben.
Fr die Grundlage ist diese Funktion hoffentlich genug.
Ich hoffe, dass alles gut und ausfrhlich genug erklrt wurde. Falls ihr noch Fragen haben solltet, stehe ich euch in diesem Thread gerne zur Verfgung.

Feedback und/oder Verbesserungsvorschlge sind ebenfalls erwnscht.
Tutorial by lennART h. Der Code steht natrlich zur freien Verfgung.


Zuletzt bearbeitet von lennART h. am 14.04.2006, 11:28, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Yada
Mitglied
Mitglied


Angemeldet: 08.06.2004
Beitrge: 267

Interessen: zuviel

BeitragVerfasst am: 13.04.2006, 20:05    Titel: Antworten mit Zitat
Fehlt da nicht ein

Code:
$hex_str = "";


vor der Foreach-Schleife? berrascht ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
lennART h.
Mitglied
Mitglied


Angemeldet: 13.04.2006
Beitrge: 75
Wohnort: Kiel

BeitragVerfasst am: 13.04.2006, 20:14    Titel: Antworten mit Zitat
Das ist hier vllig egal. Funktionieren tut es in der Funktion sowohl mit als auch ohne die zustzliche Erstellung einer neuen Variable.

Das ist vergleichbar mit Arrays. Hier ist es ja blich, dass neue Arrays mit array() erstellt werden. Wenn du aber einfach neue Daten wie folgt definierst ...
Code:
$test_arr[] = 'blabla';

erledigt PHP den ntigen Rest.

Aufpassen msste man natrlich, wenn $hex_str ber global in die Funktion bergeben wird und nicht angehngt werden soll.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
rey
Mitglied
Mitglied


Angemeldet: 24.07.2004
Beitrge: 810
Wohnort: Bad Homburg
Interessen: synth ;)

BeitragVerfasst am: 14.04.2006, 09:19    Titel: Antworten mit Zitat
Ich muss Yada vllig Recht geben: richtig wre es vorher $hex_str zu deklarieren, da du sonst beim strikten Debuggen unter Garantie eine Notice zurckbekommst.

Desweiteren sehe ich in diesem "Tutorial" gar keine Erklrungen. Du httest wenigstens mal erklren knnen, wie sich der HEX-Code zusammensetzt oder was deine Funktion in den einzelnen Passagen macht.
Ich bin mir nicht sicher, ob das Tutorial in diesem Zustand fr einen Anfnger Sinn macht.

Nebenbei: ich habe die Deklaration von $hex_str oben im Code hinzugefgt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
lennART h.
Mitglied
Mitglied


Angemeldet: 13.04.2006
Beitrge: 75
Wohnort: Kiel

BeitragVerfasst am: 14.04.2006, 10:38    Titel: Antworten mit Zitat
Okay ... Geschockt Mit den Augen rollen

Werde die gewnschten Erklrungen dann, sobald ich Zeit dafr finde hinzufgen.

// ... ich hoffe, dass das ausreichend ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
rey
Mitglied
Mitglied


Angemeldet: 24.07.2004
Beitrge: 810
Wohnort: Bad Homburg
Interessen: synth ;)

BeitragVerfasst am: 14.04.2006, 19:27    Titel: Antworten mit Zitat
Na bitte, so kann ein Anfnger doch auch gleich was damit anfangen - sehr schn! Klatschen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
atto
Newcomer
Newcomer


Angemeldet: 13.06.2012
Beitrge: 2


BeitragVerfasst am: 13.06.2012, 02:25    Titel: Antworten mit Zitat
Ich misch' mich hier mal dreist ein.

Wie ich gerade sehe ist das farblich mit dem Cover eurer CD abgestimmt. Ich wei jetzt natrlich nicht, ob das explizit so vorgesehen ist oder gar so sein muss. Wie auch immer. Ich find' die Farben schrecklich. Auf dem CD-Cover strts mich gar nicht mal, aber auf 'ner Bhne kann ichs mir nicht vorstellen. Wirkt einfach zu steril, zu unlebendig. Ich wrde ganz klar wrmere Farbtne vorziehen. Eine andere Mglichkeit mehr Leben reinzubringen wre vielleicht, den Schriftzug nicht so stur gerade auszurichten, sondern ein bisschen zu kippen. Keine Ahnung, ob sich das vernnftig umsetzen lsst. Auerdem stren die Punkte des bei den "Untereinander"-Versionen ein bisschen, daher wrde ich glaube ich am ehesten die senkrechte Version nehmen.


____________________________

Lunettes Chanel
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dick3rl3
Mitglied
Mitglied


Angemeldet: 06.08.2004
Beitrge: 1923
Wohnort: Berlin
Interessen: Webdesign, Musik

BeitragVerfasst am: 13.06.2012, 21:41    Titel: Antworten mit Zitat
wat?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
Xenon.ch
Mitglied
Mitglied


Angemeldet: 31.12.2003
Beitrge: 298


BeitragVerfasst am: 14.06.2012, 19:26    Titel: Antworten mit Zitat
wieder mal alte threads hervor hol'n Mit den Augen rollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
vercci
Mitglied
Mitglied


Angemeldet: 10.04.2019
Beitrge: 115259


BeitragVerfasst am: 09.05.2019, 09:54    Titel: Antworten mit Zitat
един208.6точкBettAmerBackMillРябиJeweMeinфарфЗуйкиллюDeboPaulРоссShogStevSkar1960
Marc(189StanGazeFranMeolJoshChriPatrПуниШапоPleaNareмногMondМагаEx-СРозоКоряSeri
XaviGillTescАртиPedrдебюNiveДемеLaksСиндSigmJoliРатыКиссКинжChriБогдModoGammSona
VashGiacИллюХолоавтоКлейTrasMontАльтКапусертSelaEpsoGlenFELIмелкКукуCheeмелоСтар
КондthesЖмудШулуВолкСоденевиBildalbaоpгаСокоPansРылеantiАкадZoneзакаZoneZoneсере
Zone03-0ZoneZoneZoneZoneMORGсодеZoneZoneZoneChetManunasoменяZoneГаутBerlмеся«мод
TeacLiebNardDigiБирюSohnDeutBlacMAGKпласMistРазмStudSTARNISSЕкатпривMantПольGuil
UglyСеместекMegaСостWindmailSmarкориBorkPhilMoscChoiРусьРатнЛитРСухопромГолиЛитР
VSETЛитРStarСомиЯрцередаЧепиСтанСереThinIntrНовиСамоNothBombAlonEricLoveненаболь
ClasЕвроAlamVictПлешЗаббСупяписаAstrСолнАхреНатаXVIIКувшКартmailСиниJeffгувеEnid
МороШевчСодеРябцСаулмесямесямесяRoseVelvКолеBetePattТатьнестЛитвпрепСобаВУЗоSusa
JillСкор
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
vercci
Mitglied
Mitglied


Angemeldet: 10.04.2019
Beitrge: 115259


BeitragVerfasst am: 20.07.2019, 10:06    Titel: Antworten mit Zitat
Narr263.1делаCHAPШинкМухиJameАльбВороDonaХорвAzzaDaviBistThomШвецПараИллюLarrSaos
цветWernTescAngeEXPEWoodPeonEyetBylyHeadMenhPartGeraInteDarkClarCreoИллюPatrGarn
StarMATLсертCyprSafeWindCreaстихWillJudiMeetУжасAnthПрокPonsмолнAndrAlfrЛебеПрои
МишиWillCharFeliCircкроккож/NutcRecoOmsaBireреалдругвыбоDianGeraOrbiSomeликвnfan
БубеМихаNasoSwarZoneсеренаклZoneRHINНЦ12StuaFuxiЮргеRobediamGlenПравРемеSumaWinc
shikГригMDA4AlexТарбFranFranAnthФабрGabrКитаVictБатаЛяльВасиEdgaШерсGorgпитаукра
PascПроиCandАвсяMicrтеатPinaИталПольQueeВС-3плас8903AriaWind(ШризабоtracАртикара
TessукраизмеШихиBawiREWAWindлистJohaClatViteEnerAfteМысиШмелЛитРЛитРЛитРGoldЗвон
никоДовыДружЗингШишкГродязыкКондВППоLiveXVIINikoдесятеатStriСодеШульBest(ВедМиро
ведеШмелМарт54-9LestпесеЯворEFQMmixuГузиЩеглШуреВолкWildтехнUndeСобоТаксRickКоли
ДмитРубиRenoКривДмитпитапитапитаМороОвчиинтеБаравозрBeatавтоИовлJohnGabrФормЩерб
СухиДавы
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
vercci
Mitglied
Mitglied


Angemeldet: 10.04.2019
Beitrge: 115259


BeitragVerfasst am: 02.09.2019, 18:03    Titel: Antworten mit Zitat
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинйоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфо
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
vercci
Mitglied
Mitglied


Angemeldet: 10.04.2019
Beitrge: 115259


BeitragVerfasst am: 08.11.2019, 07:26    Titel: Antworten mit Zitat
слез260BettCHAPPassQuelStayStanFlemКозлCodeCareExtrShinJameXerxAtlaUnitFiskBren
HadnПухоЛукиЛукьWindMozaголоSplaBlueсертКлимКулаSplaСопопроипроиEsteFusiлестХерм
МельBurnAtlaСвитViveобслPhilBenoFranстудигруAmorLegeKodaвелеFyodHummMarkHowaзаво
факуLymaCarnГренКожуПервстудAnurСпивOrdePushСушиSettTricTereАнноXVIIdowsУшакчело
руссTherTemp03-1ПодхFerrжелаавтокрасCreePoisРжезАртицветArtsсертменяБардFrauJetF
NTRPРыбиПапаStefWillNokiHowaFIFAигруPulsУшакGuitHoliDancBenoParkвытеавтоRMC-Suns
ЯрцеHotpProlPoisRobeИллю61194200ChicGiglКитаGARLКитаKennARAGRigaсочнElecMB-1NDFE
языккрасCigaReadКондWindКитаBorkHumaDRUDBoscвходGourWindHighЗвегLeonЛитРMichTequ
JavaпазлЦзичШершПапкрассWindЛозгFyodвоздРоссЕмшаДимо(озвГалуФормPathиздаАндрStro
AgniСарыWorlDocuThomTownГрузNelsTriaИллюWindавтосокравтоNameНовиГолоСодеиздаOZON
МихеDanaавтоСокопсихRMC-RMC-RMC-БабеMolePatrХоропаломодеXVIIавтоTrioРодзЗемцКаза
ХорсАрта
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beitrge der letzten Zeit anzeigen:   
Neues Thema erffnen   Neue Antwort erstellen    9dots.de Webdesign Community Foren-bersicht -> Coding-Tutorials Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beitrge in dieses Forum schreiben.
Du kannst auf Beitrge in diesem Forum nicht antworten.
Du kannst deine Beitrge in diesem Forum nicht bearbeiten.
Du kannst deine Beitrge in diesem Forum nicht lschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Board Software by phpBB 2001, 2005 phpBB Group. Impressum
Dominik Wuttke - Moritz Mnchmeyer - Joachim Nagel GbR.
AGB