Per un lavoro ci potrebbe essere l'esigenza di dover applicare del testo sopra ad alcune foto. In realtà si tratta di creare un box sopra la foto, con un testo all'interno.

Ho trovato un codice che calcola la media del colore di un clip, e ho provato a trovare alcuni colori in base al risultato.

Conoscete qualche esperimento a proposito?

codice:
import flash.display.BitmapData;
//image è il clip sulla root
var image:MovieClip = this["image"];
//image._x = 100;
//image._y = 100;
image._visible = true;

var bitmap:BitmapData = new BitmapData(image._width,image._height,false);
bitmap.draw(image);

var sumColorR:Number = 0;
var sumColorG:Number = 0;
var sumColorB:Number = 0;
var count:Number = 0;

for(var h:Number = 0; h < image._height; h++){
	for(var w:Number = 0; w < image._width; w++){
		var col:Number = bitmap.getPixel(w, h);
		sumColorR += (col & 0xFF0000) >>> 16;
		sumColorG += (col & 0x00FF00) >>> 8;
		sumColorB += (col & 0x0000FF);
		count++;
	}
}

var backgroundcolor = new Color(_root.color);
var elcolor = new Color(_root.color2);
var elcolor3 = new Color(_root.color3);

var colorR:Number = Math.round(sumColorR / count) << 16;
var colorG:Number = Math.round(sumColorG / count) << 8;
var colorB:Number =Math.round(sumColorB / count);


colorR2 = 255-(colorR>>16)
colorG2 = 255-(colorG>>8)
colorB2 = 255-colorB

colorR2 = colorR2 << 16;
colorG2 = colorG2 << 8;

var color:Number = colorR | colorG | colorB; // Questa è la media del colore della foto

var color2:Number = colorR2 | colorG2 | colorB2; //questo è la sua differenza (almeno credo), ma ovviamente il risultato cromatico è orribile.


// qui ho provato a calcolare il rapporto tra il colore a metà scala e il colore medio. Se il rapporto è a favore del bianco uso il nero, altrimenti uso il bianco. Ma boh...
rapp = 0x7F7F7F/ color
if (rapp < 1){
	contrasto = 0xFFFFFF
}else{
	contrasto = 0	
}

backgroundcolor.setRGB(color); // colore medio
elcolor.setRGB(color2); // differenza
elcolor3.setRGB(contrasto); // colore di contrasto