[ McKracken @ 17.08.2004. 01:47 ] @
Problem je sledeci:

Imam jedan SWF i potrebno mi je da u jednom trenutku uradim snapshot onoga sto se nalazi na ekranu i to snimim u fajl na serveru... U principu, potrebno mi je da dobijem nesto sto mogu da posaljem korisniku koj ise igrao sa flashom.

Ima li ko kakvu ideju? Presao sam ceo internet, i nasao samo jedan program swf2avi, ali mi ne odgovara jer ne mogu da ga poteram server-side.
[ Trunks @ 17.08.2004. 03:06 ] @
http://portalog.kaywa.com/
Jel misliš na ovako nešto (header)?
[ McKracken @ 17.08.2004. 03:12 ] @
Da..

Nagradno pitanje je kako?


[Ovu poruku je menjao McKracken dana 17.08.2004. u 16:59 GMT]
[ McKracken @ 17.08.2004. 14:59 ] @
Hm.. mislim da smo to uspeli da resimo i bez kontakta
[ Trunks @ 17.08.2004. 15:48 ] @
Good for you. ;) Taj sajt mi je pao na pamet kad si rekao šta ti treba, pa reko' da probaš da pitaš, naši su ljudi. :)
[ McKracken @ 17.08.2004. 15:56 ] @
Objavicu ovde kako se to radi, ali moram prvo da zavrsim posao za klijenta. Preguglao sam sve i ima jako malo referenci :)


(posto me "neki" prozivaju kako ne radim nista "konstruktivno", da napisem i ja nesto korisno)
[ cobragangsta @ 12.07.2007. 00:43 ] @
Citat:
McKracken: Objavicu ovde kako se to radi, ali moram prvo da zavrsim posao za klijenta. Preguglao sam sve i ima jako malo referenci :)


(posto me "neki" prozivaju kako ne radim nista "konstruktivno", da napisem i ja nesto korisno)

....strpljiv neki klijent.

McKracken, neradis nista konstruktivno,znas... :)

ako neko ima ideju kako se ovo radi neka je ususka ovde.

ps nisam jos ceo flash forum pregledao..
[ gordon_beneth @ 12.07.2007. 23:54 ] @
Nije u pitanju pravi snapshot već mali trik. Pogledaj html source na http://portalog.kaywa.com/ i videćeš javascript funkciju "openWin(nr)". Tu funkciju pokreće flash kad klikneš na njega, i prosleđuje parameter "nr" koji je u stvari broj od 1 do 6 u zavisnosti od x pozicije miša. Dalje js funkcija otvara popup sa adresama od
http://portalog.kaywa.com/popup1.html
do
http://portalog.kaywa.com/popup6.html
u zavisnosti od "nr" parametra
Svaka od ovih stranica je ista, osim što učitavaju različite slike, od
http://portalog.kaywa.com/img/de/miniblog_00.gif
do
http://portalog.kaywa.com/img/de/miniblog_05.gif
Što će reći da se u zavisnosti od pozicije miša otvara jedna od 6 već predefinisanih stranica odnosno slika. (Btw. ima mali bug, ako klikneš skroz desno javi će ti 404 grešku, izgleda da su zaboravili da naprave http://portalog.kaywa.com/popup6.html :-))
Inače uz pomoć php-a bi to moglo da se napravi dosta preciznije, ali samo ako je u pitanju snapshot slike, snapshot npr scene iz igre je mislim nemoguć, barem u AS 2
[ cobragangsta @ 13.07.2007. 12:37 ] @
vidis, nije mi ni palo napamet da tako radi. sjajna dosetka.
hvala gordon_beneth!
[ gordon_beneth @ 14.07.2007. 16:15 ] @
Citat:
gordon_beneth
...Inače uz pomoć php-a bi to moglo da se napravi dosta preciznije, ali samo ako je u pitanju snapshot slike, snapshot npr scene iz igre je mislim nemoguć, barem u AS 2

Moram da demantujem samog sebe :-)
Postoji način da se napravi "pravi" snapshot, mada je pitanje koliko je to upotrebljivo u realnim uslovima.
Da ne dužim, evo koda (AS 2)
Code:

import flash.display.BitmapData;
sw = Stage.width;
sh = Stage.height;
var bmp:BitmapData = new BitmapData(sw, sh);
var lv:LoadVars = new LoadVars();
lv.sw = sw;
lv.sh = sh;
_root.onMouseDown = function() {
    bmp.draw(_root);
    for (i=0; i<sw; i++) {
        for (j=0; j<sh; j++) {
            color = bmp.getPixel(i, j).toString(16);
            lv[i+"_"+j] = color;
        }
    }
    lv.send("snp.php", "_blank", "POST");
};

Dakle snapshot se pravi u BitmapData objektu, ali pošto se takav objekat ne može poslati, "razlaže" se na piksele, i informacije o svakom pikselu (u stvari samo boja), sa ubacuju u LoadVars objekat, a zatim šalju snp.php fajlu, koji na osnovu tih informacijama kreira sliku. Lako je zaključiti da kod prilično opterećuje mašinu, za iole veći Stage, ali još veći je problem uploudovanja velike količine informacija na server, tako da je praktična primena prilično ograničena, tako da, ako budete isprobavali, probajte na manjem Stageu, ili prepravite kod tako da ne "hvata" ceo stage.
Da ne zaboravim, evo i php skripte
Code:

<?

header("Content-type: image/jpeg");
$width=$_POST['sw'];
$height=$_POST['sh'];
$im = @imagecreatetruecolor($width, $height)or die("Cannot Initialize new GD image stream");

for($i=0;$i<$width;$i++){
    for($j=0;$j<$height;$j++){
        $rgb=html2rgb('#'.$_POST[$i.'_'.$j]);
        $color= imagecolorallocate($im, $rgb[0],$rgb[1], $rgb[2]);
        imagesetpixel ($im, $i+1, $j+1,  $color);
    }
}
imagejpeg($im);


function html2rgb($color)
{
    if ($color[0] == '#')
        $color = substr($color, 1);

    if (strlen($color) == 6)
        list($r, $g, $b) = array($color[0].$color[1],
                                 $color[2].$color[3],
                                 $color[4].$color[5]);
    elseif (strlen($color) == 3)
        list($r, $g, $b) = array($color[0], $color[1], $color[2]);
    else
        return false;

    $r = hexdec($r); $g = hexdec($g); $b = hexdec($b);

    return array($r, $g, $b);
}
?>

Pretpostavljam da može i bolje da se napiše, ali to ostavljam nekom drugom (McKracken ??? :-)