Well being a photo gallery loader, I don't want to convert the image to grayscale. I do however Like an idea that Anthony had mentioned with getting the pixels opposite. Imagine being able to (just for the sake of conversation) drag that loader around the photo and the loader changes color as it goes over the different colors in the photo. Forget the whole black or white loader what about multicolored!!!?

That could spawn a whole buch of posibilities design wise. I may just be compounding the problem though. :)

Sent from losPhone

On Mar 29, 2009, at 2:14 PM, Juan Pablo Califano <[email protected] > wrote:

As it's been said already, you could try converting to HLS and the get the average luminance (brigthness). Here's a handy class to convert from RGB to
HSL and viceversa.

http://www.dreaminginflash.com/2007/11/19/hls-to-rgb-rgb-to-hls/
Another approach, which might be faster (but you'd have to test it to see if that's true), could be transforming to bitmap to a grey scale. You would then know how black / white each pixel is, so you could get the average value by adding the value of each pixel and dividing for the total number of pixels. Instead of reading the whole pixel value, you can just read one channel, because since it' s a grey scale, the three color channels will be
equal.

I've done something similar sometime ago, so based in that, I've put
together an example of this idea.



import flash.filters.ColorMatrixFilter;
import flash.geom.Rectangle;
import flash.geom.Point;

function getGreyFilter():ColorMatrixFilter {
   // luminance coefficients
   const rWeight:Number = 0.212671;
   const gWeight:Number = 0.715160;
   const bWeight:Number = 0.072169;

   var colMatrix:Array = [
                   rWeight,    gWeight,    bWeight,    0,    0,
                   rWeight,    gWeight,    bWeight,    0,    0,
                   rWeight,    gWeight,    bWeight,    0,    0,
0, 0, 0, 1, 0
               ];

   return new ColorMatrixFilter(colMatrix);
}

function toGreyScale(src:DisplayObject):BitmapData {
   var dest:BitmapData = new BitmapData(src.width,src.height);
   var greyFilter:ColorMatrixFilter = getGreyFilter();
   dest.draw(src);
   dest.applyFilter(dest,new Rectangle(0,0,src.width,src.height),new
Point(0,0),greyFilter);
   return dest;
}

function getGreyAverageValue(src:DisplayObject):Number {
   var greyBmd:BitmapData = toGreyScale(src);
   var rows:int = greyBmd.height;
   var cols:int = greyBmd.width;

   var accum:int = 0;

   for(var r:int = 0; r < rows; r++) {
       for(var c:int = 0; c < cols; c++) {
accum += greyBmd.getPixel(c,r) & 0xff; // take just one of the
RGB channels, since they all have the same value

       }
   }

   return accum / (rows * cols);

}

var avgGrey:Number = getGreyAverageValue(src_mc); // a value in the range
0-255
trace(avgGrey.toString(16));


Cheers
Juan Pablo Califano

2009/3/29 Karl DeSaulniers <[email protected]>

Wow,
Thank you oo so much.
I hope it hasn't been too much trouble, but I really appreciate the help.

Best

Karl DeSaulniers
Design Drumm
http://designdrumm.com

On Mar 29, 2009, at 6:21 AM, Anthony Pace wrote:

http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/
wwhelp.htm?context=LiveDocs_Parts&file=00001955.html

Karl DeSaulniers wrote:

Here is my other question.
How to identify a pixel in as2.
I haven't google'd it yet so that answer my be already out there, but I
thought I'd ask.

Sent from losPhone

On Mar 29, 2009, at 5:48 AM, Anthony Pace <[email protected]>
wrote:

just noticed that wikipedia has some decent info
http://en.wikipedia.org/wiki/HSV_color_space

Karl DeSaulniers wrote:

Yeh I was going to see if I could adopt the theory into as

Sent from losPhone

On Mar 29, 2009, at 2:23 AM, Anthony Pace <[email protected] >
wrote:

I just realized the link I have you with the java doesn't really show
you anything other than how to use java's Color.RGBtoHSB function... yikes,
I told you I was tired

This might be a little more helpful.

http://www.easyrgb.com/index.php?X=MATH&H=20#text20


Karl DeSaulniers wrote:

Your not alone burning the late night pixels.

Thanks for your response, this is a good idea.
Then you can get some kind of value that will translate to a
function.

Hmmmm..
very interesting.

Thanks for the links too.
gnight


Karl DeSaulniers
Design Drumm
http://designdrumm.com

On Mar 29, 2009, at 1:48 AM, Anthony Pace wrote:

Hi Karl,

Kind of tired, so the easiest way I can think of to do this is to evaluate and convert each pixel's RGB values to HSB and then average your found values for all the pixels in the region the loader is to be displayed
within.

Hue, Saturation, Brightness..... if the brightness is less than 50% (or 70% to 75% considering how colour value in black levels are shown in most displays) go with the light coloured loader, else go with dark.

http://www.google.ca/search?hl=en&q=rgb+to+hsb&btnG=Google
+Search&meta=
http://www.exampledepot.com/egs/java.awt/color_Hsb.html (should
be easy to convert to as3)

You could also use the inverse colour of a pixel to make it pop.

Anyone else have any bright ideas? Seriously, I am sure somebody
knows a better way.

Hoping my 2:41am ramblings help,
Anthony Pace



Karl DeSaulniers wrote:

I was wondering is there a way to recognize the density of pixels
in flash AS2 or AS3? The darkness or lightness.

For instance, say I have a loader that is dynamically loaded and
normally it would be, say, white.
But lets say I want it to have a script that detects the pixel density of the MC behind it so as to let the loader mc know to play on frame
1 or frame 2.
Frame 1 having a white loader and frame 2 having a black or grey
loader.
That way when the loader is dynamically placed over a MC with a
picture in it,
it will detect if there is a white picture (placing a black loader)
or if its a color picture (placing the white loader on top)?

Usage would be for say a photo gallery and while one picture is
being displayed, and the user clicks a new photo,
the previous photo does not remove until the new one is loaded. Thus if I have a white loader and the previous photo was white
under the loader,
the loader is hard to see and the user sometimes does not know that
anything is happening.

I basically think it would just take a script that would map out
the x and y of the loader
and read the pixel density of the MC directly behind the Loader
(reason for the x and y theory)
then switch so the user will always see a loader. Either grey or
white depending.

Sounds good in my head, may not be too good (or easy) in code
though.
Any thoughts would be great,
Thanks,


Karl DeSaulniers
Design Drumm
http://designdrumm.com
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to