2012-03-07 4 views
0

Как с помощью actionscript3, а не сбой (flash stucks при получении), могу ли я получить список всех шестнадцатеричных цветов растрового изображения.Как я могу получить список всех шестнадцатеричных цветов растрового изображения?

Это растровый подмигнули не extense (340x230)

Благодаря

+0

Какой выход вы хотите? Массив шестнадцатеричных чисел? Зачем тебе это нужно? Я предполагаю, что вам нужны уникальные цвета (без дубликатов)? – Cameron

+0

Массив без дубликатов –

+0

Мне нужно, чтобы область растрового изображения с этим цветом проходила в pathfinder –

ответ

2

Перебор вектор будет быстрее, чем GetPixel:

var lookupMap:Object = {}; 
var v:Vector.<uint> = bitmapData.getVector(bitmapData.rect) 
var colors:Array = []; 

for each (var color:uint in v) { 
    if (lookupMap[color] !== true) { 
     colors.push(color); 
     lookupMap[color] = true; 
    } 
} 
2

Его не имеет ничего общего с Flash "сосания", его простую задачу. Если ваш сбой, вы делаете что-то неправильно.

var lookupMap:Object = {}; 
var bmd:BitmapData = somebitmapDataObject; 
var colours:Array = []; 

for(var i:int=0; i<bmd.height; i++) { 
    for(var j:int=0; j<bmd.width; j++) { 
     var colour:uint = bmd.getPixel(j,i); 
     if(lookupMap[colour] !== true) { 
      colours.push(colour); 
      lookupMap[colour] = true; 
     } 
    } 
} 

Код не проверен на наличие ошибок.

+0

Очень приятно, не забудьте отменить 'lookMap' в конце. – Marty

+0

AS3 - это сборник мусора, вы не можете отказаться от вещей. GC сделает все, что нужно сделать вовремя. –

+0

Хм, правда, хотя я чувствую себя неловко в том, что держу этот огромный объект просто чилином там до тех пор, пока ГК не просыпается - может быть, по крайней мере, почистить его? – Marty

Смежные вопросы