Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@nsdevaraj
Created April 19, 2012 13:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nsdevaraj/2421025 to your computer and use it in GitHub Desktop.
Save nsdevaraj/2421025 to your computer and use it in GitHub Desktop.
DetectSkin Utility
package {
import flash.display.*;
import flash.geom.Rectangle;
import flash.utils.ByteArray;
public class DetectSkin extends Sprite {
public function detectSkinCount(bmd1:BitmapData):int{
var ht:int=0;
var ba2:ByteArray = new ByteArray();
var count:int =0;
var ba1:ByteArray;
var wt:int;
var clr:uint;
var rclr:Number;
var gclr:Number;
var bclr:Number;
var rlum:Number;
var glum:Number;
var skinClr:Boolean;
ba1 = bmd1.getPixels(new Rectangle(0, 0, bmd1.width, bmd1.height));
ba1.position = 0;
while (ht < bmd1.height) {
wt = 0;
while (wt < bmd1.width) {
clr = ba1.readUnsignedInt();
rclr = (clr >> 16) & 0xFF;
gclr = (clr >> 8) & 0xFF;
bclr = clr & 0xFF;
rlum = rclr;
if(rlum < gclr)rlum = gclr;
if(rlum < bclr)rlum = bclr;
glum = rclr;
if(glum > gclr)glum = gclr;
if(glum > bclr)glum = bclr;
skinClr = (((((((((((rclr > 80)) && ((gclr > 40)))) && ((bclr > 20)))) && (((rlum - glum) > 15)))) && (((rclr - gclr) > 15)))) && ((rclr > bclr)));
if(skinClr)count++;
ba2.writeUnsignedInt(((skinClr) ? clr : 0xFF000000));
wt++;
};
ht++;
};
ba2.position = 0;
bmd1.setPixels(new Rectangle(0, 0, bmd1.width, bmd1.height), ba2);
return count;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment