チェンジセット 160
- コミット日時:
- 2007/12/19 14:15:21 (1 年前)
- ファイル:
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as3/ColorPickUper/src/biz/muraken/ColorPickUper.as
r156 r160 29 29 * @author むらけん[http://www.muraken.biz/] 30 30 * @since Flash Player 9 (ActionScript 3.0) 31 * @version 0. 131 * @version 0.2 32 32 * @history 2007.12.17 作成 33 * 2007.12.19 アプローチを若干修正 33 34 */ 34 35 35 package {36 package biz.muraken{ 36 37 import flash.display.BitmapData; 37 38 38 public class biz.muraken.ColorPickUper{39 public class ColorPickUper{ 39 40 40 41 //___________________________________________________________________________________________________________________________________ … … 49 50 else if(quality == 2)setNum = 32; 50 51 else if(quality == 3)setNum = 64; 52 else setNum = 32; 51 53 } 52 54 … … 58 60 var coeX:Number = _bmd.width/(setNum+1); 59 61 var coeY:Number = _bmd.height/(setNum+1); 60 for(var i:int = 1;i<setNum;i++){61 for(var j:int = 1;j<setNum;j++){62 _array.push(_bmd.getPixel(coeX*i,coeY*j));63 }64 }65 62 var red:uint; 66 63 var green:uint; 67 64 var blue:uint; 68 for(var k:int=0;k<_array.length;k++){ 69 red = _array[k] >> 20; 70 green = _array[k] >> 12 & 0xF; 71 blue = _array[k] >> 4 & 0xF; 72 red = red<<4 | red; 73 green = green<<4 | green; 74 blue = blue<<4 | blue; 75 _array[k] = red <<16 | green<<8 | blue; 76 } 77 return arrayReduce(arrayUnique(_array)); 78 } 79 80 private function arrayUnique(_array:Array):Array{ 81 var fix_array:Array = new Array(); 82 var flag:Boolean; 83 var _obj:Object; 84 for(var i:uint=0,len:uint=_array.length;i<len;i++){ 85 flag = true; 86 for(var j:uint=0,len2:uint=fix_array.length;j<len2;j++){ 87 _obj = fix_array[j]; 88 if(_obj.color==_array[i]){ 89 flag = false; 90 _obj.cnt++; 65 var _color16:uint 66 var _color8:uint; 67 var _obj:Object = new Object(); 68 for(var i:int = 1;i<setNum;i++){ 69 for(var j:int = 1;j<setNum;j++){ 70 _color16 = _bmd.getPixel(coeX*i,coeY*j); 71 red = ((_color16 >> 20) << 4) | (_color16 >> 20); 72 green = ((_color16 >> 12 & 0xF) << 4) | (_color16 >> 12 & 0xF); 73 blue = ((_color16 >> 4 & 0xF) << 4) | (_color16 >> 4 & 0xF); 74 _color8 = red <<16 | green<<8 | blue; 75 if(_obj[_color8]==undefined){ 76 _obj[_color8] = 1; 77 _array.push({color:_color8, cnt:_obj[_color8]}) 78 }else{ 79 ++_obj[_color8]; 91 80 } 92 81 } 93 if(flag)fix_array.push({cnt:1,color:_array[i]});94 82 } 95 fix_array.sortOn("cnt", Array.DESCENDING | Array.NUMERIC);96 return fix_array;83 _array.sortOn("cnt", Array.DESCENDING | Array.NUMERIC); 84 return arrayReduce(_array); 97 85 } 98 86 … … 109 97 _cnt += Math.abs((_obj.color >> 12 & 0xF) - (fix_array[j] >> 12 & 0xF)); 110 98 _cnt += Math.abs((_obj.color >> 4 & 0xF) - (fix_array[j]>>4 & 0xF)); 111 if(_cnt<10)flag = false; 99 if(_cnt<10){ 100 flag = false; 101 break; 102 } 112 103 } 113 104 if(flag)fix_array.push(_obj.color);
