Detektera om bild är ljus eller mörk

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Emerald



Medlem i: 5266 dagar

Status: Offline



#742704
Inlägg Skrivet: 2020-01-13 16:20      Ämne: Detektera om bild är ljus eller mörk Citera

Försöker att bestämma ifall en bild vid uppladdning är i huvudsak ljus eller mörk, i syfte att bestämma överlappande textfärg så att den får hög kontrast.

Jag har i mina försök hittills lyckats få fram den mest "dominerande färgen" i bilden genom att bestämma rgb-värdet i ett antal pixlar och göra om det till ett histogram.

Min tanke är att eftersom 0 i rgb-värdena motsvarar svart, och 255 vitt, så bör jag kunna använda detta för att bestämma ljusheten i bilden. Skulle jag exempelvis kunna göra så här?
KOD:
1:
if((($r + $g + $b) / 3) > (255 / 2)){
2:
// ljus nyans
3:
}
4:
else {
5:
// mörk nyans
6:
}


Är min logik rimlig? Finns det något bättre sätt att åstadkomma det jag är ute efter?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 5125 dagar
Från: Tavesta
Status: Offline



#742705
Inlägg Skrivet: 2020-01-13 21:41      Ämne: Citera

Det kan vara lite knepigt att räkna ut vilken färg på texten som kommer fungera. I vissa fall kommer varken svart eller vitt fungera, t.ex om bilden innehåller både svarta och vita ytor där texten skall vara.
Ett sätt att komma runt det är att lägga kontur eller skuggning på texten, ifall du har möjlighet till det.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Emerald



Medlem i: 5266 dagar

Status: Offline



#742706
Inlägg Skrivet: 2020-01-13 21:52      Ämne: Citera

I mitt fall är det, förutom texten, även aktuellt att bestämma färgen på "black bars", vars storlek är beroende av hur bilden skalar. Även här skulle det vara bra med en hög kontrast, dvs ljus bakgrund om bilden är mörk och vice versa.

Kontur/skuggning/kantlinjer är ett alternativ. Men för bäst resultat vore det bra om jag kunde komma på en fungerande lösning så som tänkt. Kanske är det vettigt att läsa av färger längsmed kanterna, säg 10 pixlar för varje sida av bilden, eller något i den stilen?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic