[PHP] kleurmisbruik voorkomen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Voor een portal ben ik op zoek naar een functie of methode die bepaald dat bijv de kleur #ffffff teveel op #fffffe lijkt en dat deze kleuren dus niet gekozen mogen worden. Dit om te voorkomen dat mensen de achtergrondkleur hetzelfde kiezen als de tekstkleur.

Ik zoek dus een slim alghoritme die dit aan kan? Ik heb al het een en ander gezocht op het forum en ook in Google, maar zonder resultaat. Iemand mss een idee? Of kan iemand een zet in de goede richting geven?

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 20-09 06:39

Willem2

Ω is futile

Als ik me goed herinner, is hex #FFFFFF gelijk aan #RGB, dus de eerste FF is 255 rood, de tweede FF 255 groen en de derde FF 255 blauw (wit dus in dit geval). Je zou de hex waardes dus kunnen splitsen, omzetten naar RGB en een minimaal (cumulatief) verschil eisen. Dus in jouw voorbeeld is FF 255 en FE 254. 255-254=1; dit verschil is dan te klein om geaccepteerd te worden. Hoe groot het verschil minimaal moet zijn moet je met trial en error vast stellen denk ik.

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wat Willem2 zegt is volgens mij niet de meest precieze manier, maar wel de meest snelle/handige. In de praktijk zal dat ook wel vrij werkbaar zijn, dus ik zou gewoon voor die oplossing gaan. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • TweakerNummer
  • Registratie: September 2001
  • Niet online
-NMe- schreef op vrijdag 12 januari 2007 @ 12:42:
Wat Willem2 zegt is volgens mij niet de meest precieze manier, maar wel de meest snelle/handige. In de praktijk zal dat ook wel vrij werkbaar zijn, dus ik zou gewoon voor die oplossing gaan. :)
Welcome to the nabzy-matrixnabaztrix60! Super lief!

Er bestaan manieren om kleur verschil uit te rekenen, dit zijn CIE en CMC "standaarden". Zie http://www.brucelindbloom...l?Eqn_DeltaE_CIE2000.html voor een manier om het uit te rekenen.

Acties:
  • 0 Henk 'm!

  • DexterDee
  • Registratie: November 2004
  • Laatst online: 13:59

DexterDee

I doubt, therefore I might be

TweakerNummer schreef op vrijdag 12 januari 2007 @ 12:50:
[...]

Welcome to the nabzy-matrixnabaztrix60! Super lief!

Er bestaan manieren om kleur verschil uit te rekenen, dit zijn CIE en CMC "standaarden". Zie http://www.brucelindbloom...l?Eqn_DeltaE_CIE2000.html voor een manier om het uit te rekenen.
Gelukkig ziet dat er heel makkelijk uit 8)7

Volgens mij kom je met een 10% standaardafwijking al een heel eind. Bovendien zou je de groene waarde een grotere marge moeten geven omdat het menselijk oog voor deze kleur het gevoeligst is en dus het makkelijkst kleurafwijkingen kan detecteren.

Klik hier om mij een DM te sturen • 3245 WP op ZW


Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Misschien kun je eenvoudig de helderheid van de kleur berekenen en vervolgens kijken of de gekozen kleur er 10% boven/onder zit?

Helderheid kun je berekenen met:
Y = 0.299 × R + 0.587 × G + 0.114 × B

#FFFFFF geeft dan Y=1,0; alle kleuren met een helderheid kleiner dan 0,9 zou je dan bijvoorbeeld kunnen accepteren en er boven negeren.

[ Voor 25% gewijzigd door Icelus op 12-01-2007 13:02 ]

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Icelus schreef op vrijdag 12 januari 2007 @ 13:01:
Helderheid kun je berekenen met:
Dat is de grayscale value, als je op basis van helderheid wilt vergelijken kun je je kleuren beter naar HSL color space converteren.

De eenvoudigste manier die ik bedacht krijg (welke niet al te geweldig zal werken) is je 32 bit kleur naar bijvoorbeeld 16 of 8 bit converteren. (In principe converteer je je kleur al naar 8 bit met die formule).
Pagina: 1