On Fri Jul 8, 2011, Jim Ault jimaultwins at yahoo.com wrote:
On Jul 7, 2011, at 11:08 PM, Chipp Walters wrote:
> Hey guys, I'm building another education app for a state school
> system, and
> this time I'm creating a skinnable themed desktop, which kids can
> add their
> own wallpaper to. I'm wondering if anyone has a quick routine to
> calculate
> the 'main' colors of an image-- so I could automatically theme the
> button
> colors and some other objects.
>
> If not, I'll have to write my own. Thx.
>
You could take a look at Wilhem Sanke's ImageData Toolkit at
http://www.sanke.org/MetaMedia/Samples.htm
and here is a blast from the past you might appreciate Chipp
http://runtime-revolution.278305.n4.nabble.com/ANN-quot-Imagedata-Toolkit-2-quot-released-td349536.html
Hope this helps.
Jim Ault
Las Vegas
and
Chipp Walters chipp at chipp.com answered:
Thanks Jim. That is a blast from the past. In fact, I'm pretty sure I
wrote
the first convolve matrix which Wilhelm used for his earlier work. I wrote
it to create blurred shadows for ButtonGaget and to help with some image
compositing.
I suspect I'll have to write my own imagedata parser and do the necessary
math. It takes time... ;-(
Hello Chipp,
You know that I have mentioned you as the author of the first convolve
matrix fully scripted in Metacard/Revolution time and again at various
places. For example, I refer to you in the script of button "scripted
version" in my stack "Imagedata Toolkit Preview 3"
<http://www.sanke.org/Software/ImagedataToolkitPreview3.zip>, and - as
another example - I have given a detailed description of the transition
steps from your original script to a speed-optimized version I use today
(to which Mark Waddingham also contributed) even a few weeks ago in my
post <""Blurred vision" of Rev Newsletter, Apr 21"> to this list on
April 26, 2011.
Concerning your question how to
"calculate the 'main' colors of an image-- so I could automatically
theme the button colors and some other objects"
with the help of a histogram
I am not exactly sure what you intend to do, Are you looking for one or
several "main colors" of an image to use with your buttons and other
objects? And how to you intend to proceed from the various possible
representations of a color histogram (for each of the RGB values, for
the gray or even the hue values in HSV) to get one or several "main colors"?
A general recipe to create histograms can be found in Wikipedia under items
"image histogram" and "color histogram". Maybe you could also use the
free "Gimp" program and use the histogram data of an image from there?
To write your own histogram tool should be relatively easy in principle:
- Get the RGB values of each pixel of an image (or a selected area of an
image).
- count the number of occurences for each color of the RGB triple and
for each value 0 to 255
- show the accumulated numbers for each value category 0 to 255 in a chart.
Thus you can get separate histograms for each of the three RGB colors or
one for the gray values when you average the RGB values before.
To find one single "main" color of an image, you could sum up all values
for the three components R, G, and B separately and calculate the
average for each component.
Another approach would be to get the "hue" values of the image pixels
using Scott Raney's RGBtoHSV function to be found in the Metacard "Color
Chooser" and Livecode's "revcolorchooser" stacks (the latter of which is
no longer actively used in the Livecode IDE, but has remained in the
"Toolset" folder).
Raney's function unfortunately is very slow when it comes to calculate
all pixels of a medium-sized image, I prefer faster RGBtoHSL and
HSLtoRGB functions that I have ported to Livecode from examples found in
the net.
I have so far not had a reason to use color histograms in my different
image-processing stacks, but experimented with a number of other
routines to set general parameters of images like "white balance", "mid
balance", "black balance", "gamma correction", "dynamic range",
"saturation", "set chroma", "brighten/darken", "contrast", "shift hues"
etc. etc.-
I take it that most of the things I mentioned in this context here are
certainly not new to you, but if you could be a bit more specific about
what you intend to achieve I could possibly also come up with an idea or
two.
Best regards,
Wilhelm Sanke
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode