Categories Displayed in Flash

Archive for the 'ColorUtil' Category

Flash: Blend Modes and Optimal Contrast

Got some chance to play with blend modes this weekend...cool stuff. While the example is neat looking, In particular was looking for a solution to (dynamically) contrasting against an unknown background, as is likely to happen with developing tools with unknown content, else whatever you pick will break.. This is easy to see on my TV programs, where the 'bug' has to show up against an rapidly changing background of. Say showing white text against a dark background and a light text against a dark, versus the normal technique of white text with a dark blur around it, to always have an moat of safety around it.

Flash blend modes exploration on high contrast backgrounds
(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

What you're seeing is a 3 line text with:

Snow (white and black)
Snow (50% gray, 50% gray 50% transparent)
Snow (black and white)

Repeated a bunch of times, in a clip with the blend mode listed at the top.

Unfortunately in the gray zone most techniques just fail. Helped me realize what's really desired is some intelligence as to what is beneath the image to pick a suitable offset, say at when 50% gray, just choosing white or black based on the dominate color of the page. Leading to the only way to get high contrast between menu items is the halo..which I suppose is more consistent from a usability, if less integrated with the image.

Kaourantin the implementer of these in the flash player has great information on how they behave, and the impact on performance. As mentioned here To use Alpha and erase blend modes you have to do extra work: 1) put them in a parent movie clip, and turn that parent's movieclip blend mode to 'layer', else they don't show up at all.

Contrast this approach with the use of ColorUtils and Adaptive Color

AS3: Image Posterization + ColorUtils + Adaptively Colored UI’s

Ported this posterization algorithm to AS3 . It will be in the com.troyworks.ui.ColorUtil, when released.

Posterization is basically compressing the color range of a photo into something smaller. Anybody who has worked with converting to 'indexed color' in GIF or PNG knows what this means. Say you have a sun against a sky of blue.  Since there are only say 8 colors, there is no need to have room for 24bit color across the entire range, making it dramatically smaller.  The other use is for artistic purposes,

Porting one to actionscript has allowed me to create something nifty. One of the design challenges when working with dynamically loaded images is complimenting the colors in the loaded image in the surrounding UI elements., and from a useability perspective making sure that text and UI elements are sufficiently contrasting from whatever dominate color is chosen, else they dissapear...is that "cut or delete?"

So towards that end, I created this prototype, click on one of the indexed colors to change the ui, the text will choose from one of the other color bands. The title will pick either white or black to attempt whatever the best contrast is from the selected color.

Click on any of the colored bars to have the entire UI adjust..all colors originate from the thumbnail.

(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

This was accomplished by first posterizing the loaded image (the second image) and indexing the colors with a bandpass filter (filtering out anything too black or too white) via com.troyworks.ui.ColorUtil , sorting by how often the color occurs in the image to generate the histogram. Used com.troyworks.core.tweeny.Tny to do the color tweening. com.troyworks.data.ArrayX to get a random color from the bands.

From a design perspective, it's interesting how the low occurance spot colors when selected makes the image seem more 'playful' while the more common dominate ones 'serious'. I find myself wanting to put a better color distance in, to filter out things close to grays from the options.

There are also method to get shades and hues from a given color, but no examples yet.

All in all a fun way to spend a few hours this evening, while listening to Lily Allen.