Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Определение цвета пикселя (http://www.flasher.ru/forum/showthread.php?t=135601)

kon_ivan 27.01.2010 13:28

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

lexa2000lexa 27.01.2010 13:35

в помощь
Код AS1/AS2:

getPixel и getPixel32


udaaff 27.01.2010 13:47

Код AS1/AS2:

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

Выделяйте нужный канал из цвета.
Код AS1/AS2:

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

Код AS1/AS2:

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

Код AS1/AS2:

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

спс огромное =)


Часовой пояс GMT +4, время: 09:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.