PDA

Просмотр полной версии : Определение цвета пикселя


kon_ivan
27.01.2010, 13:28
Здрасте) у меня есть jpg картинка. Нужно чтобы флеш ее загружал и определил, что в точке 100,100 цвет пикселя такойто. Как это сделать? Картинку гружу через loadMove, делаю BitmapData, а дальше? BitmapData нафигато создает прямоугольник, и даже если его делать прозрачным, он не определяет цвет какого нибудь пикселя? плиз хелп)

lexa2000lexa
27.01.2010, 13:35
в помощь getPixel и getPixel32

udaaff
27.01.2010, 13:47
import flash.display.BitmapData;

var jpgContainer:MovieClip = createEmptyMovieClip("jpgContainer", 0);

var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(this);
mcl.loadClip("test.jpg", jpgContainer);

var bmd:BitmapData = new BitmapData(500, 500, true);

function onLoadInit(target:MovieClip):Void
{
bmd.draw(target);
onMouseMove = onMouseMoveHandler;
}

function onMouseMoveHandler():Void
{
trace("0x" + bmd.getPixel(_xmouse, _ymouse).toString(16));
}

kon_ivan
27.01.2010, 13:49
спасииибо)

LeXa4
28.02.2010, 16:21
Люди, а подскажите как as2 можно определить не код цвета а R, G и B

udaaff
28.02.2010, 19:49
Выделяйте нужный канал из цвета.
var c:Number = 0xFFAACC;
var r:Number = c >> 16;
var g:Number = c >> 8 & 0xFF;
var b:Number = c & 0xFF;

LeXa4
28.02.2010, 22:55
import flash.display.BitmapData;

var jpgContainer:MovieClip = createEmptyMovieClip("jpgContainer", 0);

var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(this);
mcl.loadClip("avatar.jpg", jpgContainer);

var bmd:BitmapData = new BitmapData(499, 299, true);

function onLoadInit(target:MovieClip):Void {
bmd.draw(target);
}

//До сюда почти ничего не изменял

//Преобразование кода цвета в R G и B
function RGB(color:Number) {
R=(color >> 16) & 0xFF;
G=(color >> 8) & 0xFF;
B=(color) & 0xFF;
return R+":"+G+":"+B;
}

//Ну и создание матрицы цветов...
for (yc=0; yc<100; yc++) {
for (xc=0; xc<100; xc++) {
bmd.draw(target);
colore="0x"+bmd.getPixel(xc, yc).toString(16);
carr.text+=RGB(colore).toString(10)+",";
}
}

Не работает через FOR

Помогите плиз...

udaaff
28.02.2010, 23:45
import flash.display.BitmapData;

var jpgContainer:MovieClip = createEmptyMovieClip("jpgContainer", 0);

var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(this);
mcl.loadClip("avatar.jpg", jpgContainer);

var bmd:BitmapData = new BitmapData(499, 299, true);

function onLoadInit(target:MovieClip):Void
{
bmd.draw(target);

var s:String = "";
for (var i:Number = 0; i < 100; i++)
{
for (var j:Number = 0; j < 100; j++)
{
s += colorToString(bmd.getPixel(j, i)) + " ";
}
}
tf.text = s;
}

function colorToString(color:Number):String
{
var r:Number = color >> 16 & 0xFF;
var g:Number = color >> 8 & 0xFF;
var b:Number = color & 0xFF;
return b + ":" + g + ":" + b;
}

LeXa4
01.03.2010, 13:07
спс огромное =)