简体   繁体   中英

Text color based on background image

My view has a background image with a text label overlay What's the best/good dynamic way to determine text color based on the background image so it can be readable (For now, I'm only interested on determining if text color should be dark or light)

Thanks :)

Find the average color with the link woz mentioned

Then style your text

CGFloat red = 0.0, green = 0.0, blue = 0.0, alpha = 0.0;
[averageColor getRed:&red green:&green blue:&blue alpha:&alpha];

int threshold = 105;
int bgDelta = ((red * 0.299) + (green * 0.587) + (blue * 0.114));

UIColor *textColor = (255 - bgDelta < threshold) ? [UIColor blackColor] : [UIColor whiteColor];

something like this.

You could also use the link above to get the UIColor from the image and use matt's category for UIColor to get light or dark.

My first though is to find the average color of the image and set the text color based on that. Of course, images can contain light and dark areas, so the color you choose could be unreadable at times.

To find the average color of an image, try this:

http://www.bobbygeorgescu.com/2011/08/finding-average-color-of-uiimage/

Once you have the average color, check the red, green, and blue values. If they are "high enough" (whatever you define that as), use dark text, else use light text.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM