[PHP] Odczyt właściwości animacji flasha

0

Czy istnieje (w miarę) prosty sposób na podejrzenie "właściwości" animacji flash spod skryptu PHP?
Najbardziej mi zależy na wymiarach (czy te pliki mają w ogóle wymiary?), lub chociaż proporcji obrazu...

0

Moze bedzie http://www.php.net/ming

<?
// bytes_to_signed_int(data,offset,length)
function b2i($d,$o,$l) {
    $s=(ord($d[$o/8])>>(7-$o%8))&1; $r=0;
    for ($i=$o+1;$i<$o+$l;$i++) {
        $b=(ord($d[$i/8])>>(7-$i%8))&1;
        $r=($r<<1)+($s?!$b:$b);
    }
    if ($s) { $r++; $r=-$r; }
    return $r;
}

// flash9 or <9 but uncompressed
$f="trianglemx.swf";

// get only 20 first bytes
$d=file_get_contents($f,0,null,0,20);

echo "Wersja flashah : ".ord($d[3])."<br>";
$s=unpack("V",substr($d,4,4)); echo "Rozmiar : ".$s[1]." bajtow<br>";

// here is the decompression, fix this for flash <9
if (substr($d,0,3)=="CWS") $d=substr($d,0,8).gzinflate(substr($d,8));

$nb=ord($d[8])>>3; // bytes needed
$xmin=b2i($d,8*8+5,$nb);
$xmax=b2i($d,8*8+5+$nb,$nb);
$ymin=b2i($d,8*8+5+2*$nb,$nb);
$ymax=b2i($d,8*8+5+3*$nb,$nb);

// szerokosc=xmax-xmin, wysokosc=ymax-ymin, twips->pixels = /20
echo "szerokosc=".(($xmax-$xmin)/20)."<br>";
echo "wysokosc=".(($ymax-$ymin)/20)."<br>";
?>

Dziala jak masz wlaczone ming .
Ide czytac lekturke tego... nie wiedzialem ze php ma dostep do flasha...
a do twojego opisu ..

jeszcze tylko miesiac wakacji
to dla mnie 3dni :(

0

a po co tutaj ming, skoro (chyba) nie korzysta toto z jakichś specjalnych funkcji? Tak czy siak tego szukałem, dzięki :)

a jeszcze jedno pytanie - czy da się coś takiego zrobić na (już załadowanym) obiekcie flash z poziomu javascript?

0

Zdaje się, że zwykłe getimagesize() może się dobrać także do plików swf.

0

ten javascript byłby świetny, ale... nie działa dla zewnętrznych obiektów :(

Error calling method on NPObject!
[Break on this error] var width = movieObj.TGetProperty("/", 8);

google mówi, że trzeba we flashu dopisać zezwolenie dla domeny - w tym problem, że ja przeca do flashy youtuba czy imeem raczej grantów nie dostanę :(. Jakiś pomysł, czy jednak trzeba to w php zrobic?

0

Zrob tak aby ci sprawdzal szerokosc animacji z pliku getsize.php?link=http://www.stronka.pl/pliczek.swf . http://www.stronka.pl/pliczek.swf zamiast tego dajesz swoja animacje. a w tym php zrob, aby sciagal ten plik na serwer tymczasowo. podejrzyj phproxy
np http://bordeux.boo.pl/index.php?q=uggc%3A%2F%2Fjjj.r7.cy%2F%7Epnfun%2Ffjs%2Ffgberonryg.fjs&hl=1ff to pobiera www.e7.pl/~casha/swf/storebaelt.swf .. nie wiem moze pojdzie

0

no to, że da radę przez ajax to wiem, ale to akurat najgorsze możliwe rozwiązanie - zbyt duże obciążenie serwera

edit: nie przeczytałem uważnie - tak to jeszcze bardziej serwer obciąża ;). Akurat w tworzonym serwisie są wysokie wymogi jeśli chodzi o wydajność

edit2: chyba odpuszczę i po prostu będę zapisywał proporcje animacji przy dodawaniu jej do serwisu. Wielkie dzięki za pomoc :)

edit3: mi ten kod zadziałał dopiero po małych modyfikacjach:

$d=file_get_contents($f,0,null,0,40);
(...)
if (substr($d,0,3)=="CWS") $d=substr($d,0,8).gzinflate(substr($d,16));

edit4: dupa, złe dane oddaje :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1