I actially wanted to get the density. How dark and how light. Not
necessarily black and white. Dark color or light color. I also don't
want to convert any images. Now if it takes converting the image to
calculate, then the user can never see this conversion of the photo.
Just the conversion of the loader. If that makes sense. :)
Sent from losPhone
On Mar 29, 2009, at 3:41 PM, Ian Thomas <i...@eirias.net> wrote:
Flash's smoothing may introduce irregularities, I guess.
But given that the original poster only wanted to know grey or white,
surely it's a good enough approximation for that purpose?
Ian
On Sun, Mar 29, 2009 at 9:08 PM, Juan Pablo Califano
<califa010.flashcod...@gmail.com> wrote:
It's indeed much faster (five times faster than transforming to
grey scale),
though the results I'm getting are incorrect (the other 2 methods
seems to
return consistently similar results, though trasnforming to HLS
takes about
3200 ms for a 1152 x 864 image, and transform to grey scale takes
around 130
ms).
It could be the case that I'm doing it the wrong way, of course...
This is
the code I'm using.
function getAverageFromScaledBitmap(src:DisplayObject):Number {
var dest:BitmapData = new BitmapData(1,1);
var mat:Matrix = new Matrix();
var sx:Number = 1 / src.width;
var sy:Number = 1 / src.height;
mat.scale(sx,sy);
dest.draw(src,mat,null,null,null,true);
var hls:Object = ColorUtils.RGBtoHLS(dest.getPixel(0,0));
return hls.l;
}
Cheers
Juan Pablo Califano
2009/3/29 Ian Thomas <i...@eirias.net>
On Sun, Mar 29, 2009 at 8:14 PM, Juan Pablo Califano
<califa010.flashcod...@gmail.com> 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.
If you're going to test any kind of average pixel value, it'd be far
faster to take a bitmap copy of the frame scaled to 1 pixel x 1
pixel
(with smoothing on) - and just read the colour value of that
pixel...
HTH,
Ian
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders