home > Color

ColorTransform

July 15, 2007

久しぶりのエントリー。またまたカラー設定を勉強中。特にColorTransformを。あまりよく分からず使っていたので調べなおした。赤、緑、青、アルファ透明度の 4 つのチャネルを変更できるようです。

ColorTransform(redMultiplier:Number, greenMultiplier:Number, blueMultiplier:Number , alphaMultiplier:Number, redOffset:Number, greenOffset:Number, blueOffset:Number, alphaOffset:Number)

詳しくはこちら

ColorTransformクラスを使って簡単なサンプルを作りました。赤、緑、青、アルファ透明度の 4 つのチャネルをランダムにして、値を減らしていくだけのものです。




1フレーム目

//ランダム設定
var redbar = Math.floor( Math.random()*255 );

var greenbar = Math.floor( Math.random()*255 );

var bluebar = Math.floor( Math.random()*255 );

var alphabar = 255;


2フレーム目
import flash.geom.ColorTransform;

var trans = new flash.geom.Transform(this.obj);

var clr:ColorTransform = new ColorTransform(1, 1, 1, 1, redbar, greenbar, bluebar, alphabar);

trans.colorTransform = clr;


3フレーム目
if(( redbar <= -255 )&&( greenbar <= -255 )&&( bluebar <= -255 )&&( alphabar <= -255 )){
this.gotoAndPlay(1);//初めから
}else{//-225まで減らしていく
if( redbar == -255 ){
redbar = -255;
}else{
redbar--;
}
if( greenbar == -255 ){
greenbar = -255;
}else{
greenbar--;
}
if( bluebar == -255 ){
bluebar = -255;
}else{
bluebar--;
}
if( alphabar == -255 ){
alphabar = -255;
}else{
alphabar--;
}
this.gotoAndPlay("roop_color");
}


Permalink | Comments (0)

画像の色を平均化

May 22, 2007

色ネタでもういっちょう。色の平均化のプログラムを作ってみました。





~画像に50ピクセルごとにプロットをうつ(省略)~

//各プロットの色を検出

for (i=1; i<=45; i++) {
 //各プロットの色
 var clr2:Number = pict_bd.getPixel(xzahyou[i], yzahyou[i]);

 r[i] = (clr2 & 0xFF0000) >> 16;
 g[i] = (clr2 & 0x00FF00) >> 8;
 b[i] = clr2 & 0x0000FF;
}

//R、G、B、それぞれの色の平均値を求める
for (i=1; i<=45; i++) {
 R_Plus = R_Plus+r[i];
 G_Plus = G_Plus+g[i];
 B_Plus = B_Plus+b[i];
}
trace("R平均値 = "+Math.floor(R_Plus/45));
trace("G平均値 = "+Math.floor(G_Plus/45));
trace("B平均値 = "+Math.floor(B_Plus/45));

RGBを16進数に変換
aa_numb = Math.floor(R_Plus/45).toString(16);
bb_numb = Math.floor(G_Plus/45).toString(16);
cc_numb = Math.floor(B_Plus/45).toString(16);
trace("R平均値(16進数) = "+aa_numb);
trace("G平均値(16進数) = "+bb_numb);
trace("B平均値(16進数) = "+cc_numb);

//16以下なら前に0を加える
if(Math.floor(R_Plus/45) <= 16 ){aa_numb = "0"+aa_numb;}
if(Math.floor(G_Plus/45) <= 16 ){bb_numb = "0"+bb_numb;}
if(Math.floor(B_Plus/45) <= 16 ){cc_numb = "0"+ cc_numb;}

cPlus = "0x" + aa_numb + bb_numb + cc_numb;
trace("合計カラー値 = "+cPlus);

//RGBを表示
trace(aa_numb + bb_numb + cc_numb);
this.kpicer.rgb.text = aa_numb + bb_numb + cc_numb;

//カラー設定関数
ColorSet(cPlus);
function ColorSet(nu:Number) {
 var myColor:Color = new Color(this.colorimg);
 myColor.setRGB(nu);
}
this.stop();


Permalink | Comments (0)

getPixel()

May 21, 2007

public function getPixel(x:int, y:int):uint
BitmapData オブジェクトの特定ポイント (x, y) の RGB ピクセル値を表す整数を返します。getPixel() メソッドは、乗算されていないピクセル値を返します。アルファ情報は返しません。 また、座標がイメージの外側である場合、メソッドは 0 を返します。

import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000);

//座標(80、40)の色情報を取得
var pixelValue:uint = bmd.getPixel(1, 1);
//16進数のRBGカラー値に変換
trace(pixelValue.toString(16)); // ff0000;

この場合、戻り値がピクセル値なので、MC.toString(16)で16進数のRGBカラー値になります。

また、getPixel32()という関数もあるみたい。 これはアルファチャンネルデータと RGB データを含む ARGB カラー値を返します。

さらに、getPixels() という関数もあります。これはピクセルデータの矩形領域からバイト配列を生成しますらしいです。これはよくわかりません‥

参考サイトはこちらです。


Permalink | Comments (0)

画像の色取得

April 15, 2007




○ 初期設定

import flash.display.BitmapData;
import flash.geom.ColorTransform;

var pict_bd:BitmapData = BitmapData.loadBitmap("hand.jpg");
bitmap_mc.attachBitmap(pict_bd, 0);

○ マウスをマウスをスポイト画像に変更する

this.attachMovie("pointer", "pointer", 1);
pointer._visible = false;
var mouseListener:Object = new Object();
mouseListener.onMouseMove = function():Void {
 var xMouse:Number = bitmap_mc._xmouse;
 var yMouse:Number = bitmap_mc._ymouse;
 if (xMouse >= 0 && xMouse < 663 && yMouse >= 0 && yMouse < 200) {
  Mouse.hide();
  pointer._visible = true;
  pointer._x = _xmouse;
  pointer._y = _ymouse;
  var clr:Number = pict_bd.getPixel(xMouse, yMouse);
  showInfo([xMouse+1, yMouse+1], clr);
 } else {
  Mouse.show();
  pointer._visible = false;
 }
 updateAfterEvent();
};
Mouse.addListener(mouseListener);

○ カラー設定する

var clrTrans:ColorTransform = new ColorTransform(0, 0, 0, 1, 0, 0, 0, 0);

showInfo([0, 0], 0xFFFFFF);
function showInfo(pos:Array, clr:Number):Void {
 picker.xPos.text = pos[0];
 picker.yPos.text = pos[1];
 var obj:Object = colorToRGB(clr);
 kpicer.rgb.text = colorToStrRGB(clr);//RGBを表示

 clrTrans.rgb = clr;
 picker.clr.transform.colorTransform = clrTrans;
 
 //カラーイメージに色を設定
 var myColor: Color = new Color( colorimg );
 myColor.setRGB( clr );
}

○ カラー関数

function colorToRGB(clr:Number):Object {
 var r:Number = (clr & 0xFF0000) >> 16;
 var g:Number = (clr & 0x00FF00) >> 8;
 var b:Number = clr & 0x0000FF;
 var obj:Object = {r: r, g: g, b: b};
 return obj;
}
//カラーを16進数に
function colorToStrRGB(clr:Number):String {
 var rgb:String = ("00000" + clr.toString(16)).substr(-6).toUpperCase();
 return rgb;
}


Permalink | Comments (0)

setRGB()

April 14, 2007

Flashのカラー設定。まずnew Color()でカラーオブジェクトを作成してからsetRGB()で色を設定する。色は16進数で0x+16進数となる。

var myColor: Color = new Color(myMC);// myColorというカラーオブジェクトを作成
myColor.setRGB(0xFF0000); // myMCが赤になる

そこでこんなのを作ってみました。時間の数字が背景のカラーに反映されている。つまり今の時間色は‥みたいな感じですかね。
ClockColor



ルートに下記のASを記入して、それぞれ数字のMCを作成しておく。

Dateobj = new Date();
var hh = Dateobj.getHours(); //時の取得
var mm = Dateobj.getMinutes(); //分の取得
var ss = Dateobj.getSeconds(); //秒の取得
var mon = Dateobj.getMonth();//週

//1の位と10の位を分割
if(hh<=9){
 hour1.num = 0;
 hour2.num = substring(hh, 1, 1);
}else{
 hour1.num = substring(hh, 1, 1);
 hour2.num = substring(hh, 2, 1);
}
if(mm<=9){
 min1.num = 0;
 min2.num = substring(mm, 1, 1);
}else{
 min1.num = substring(mm, 1, 1);
 min2.num = substring(mm, 2, 1);
}
if(ss<=9){
 sec1.num = 0;
 sec2.num = substring(ss, 1, 1);
}else{
 sec1.num = substring(ss, 1, 1);
 sec2.num = substring(ss, 2, 1);
}
var ClockID ="0x" + hour1.num + hour2.num + min1.num + min2.num + sec1.num + sec2.num;
trace(ClockID);

//背景に色を設定
var myColor: Color = new Color( myObj );
myColor.setRGB( ClockID );


Permalink | Comments (0)