Categories
Tutorial ActionScript

Salvare un printScreen di un SWF

Come creare un’istantanea del filmato SWF e salvarla su disco in formato Jpeg.

Loading spinner

Certe volte può capitare di aver bisogno di salvare un’istantanea dello Stage su disco rigido. Non tutti i nostri utenti avranno la pazienza di fare il PrintScreen di tutto lo schermo, ritagliare la parte interessata e conservarla, vediamo come fornire loro uno strumento più comodo per compiere questa operazione.Con Flash Player 10 è possibile leggere e scrivere direttamente sul disco dell’utente, grazie all’utilissima Classe FileReference.

Prima di poterla salvare, però, abbiamo bisogno di creare un’istantanea dello Stage in qualche modo. Questo è un lavoro per la Classe BitmapData.

La classe BitmapData consente di eseguire operazioni con i dati (pixel) di un oggetto Bitmap. È possibile utilizzare i metodi della classe BitmapData per creare delle immagini bitmap trasparenti e opache con dimensioni arbitrarie e manipolarle in vari modi in fase di runtime.

Utilizzando questa Classe è molto facile creare una rappresentazione in Pixel dell’intero Stage, si fa in questo modo:

var bd:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
bd.draw(stage);

Con due sole righe abbiamo instanziato una BitmapData e abbiamo disegnato al suo interno l’intero contenuto dello Stage.

Adesso dobbiamo convertire le informazioni contenute all’interno della nostra BitmapData in un flusso Jpeg, in modo da poterlo salvare su disco. Per farlo ci serviremo della Libreria AS3corelib. Questa Libreria contiene numerose e utili Classi per manipolare i dati, la Classe che utilizzeremo per questo esempio si chiama com.adobe.images.JPGEncoder.

Una volta importata la Classe non ci rimane che utilizzare il suo Metodo encode per trasformare la nostra BitmapData in un flusso di informazioni Jpeg, in questo modo:

var ba:ByteArray = (new JPGEncoder()).encode(bd);

Adesso che abbiamo una Jpeg da salvare possiamo finalmente utilizzare un FileReference per salvare questa immagine sul disco, semplicemente aggiungendo un’unica riga:

(new FileReference()).save(ba,'printScreen.jpg');

Tutto qui, in sole quattro righe è stato possibile creare un’istantanea dello schermo, convertirla in Jpeg e salvarla su disco… Sole quattro righe:

var bd:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
bd.draw(stage);
var ba:ByteArray = (new JPGEncoder()).encode(bd);
(new FileReference()).save(ba,'printScreen.jpg');

Nella maggior parte dei casi basterà questo per permettere ai vostri utenti di salvare un’istantanea dell’SWF che stanno guardando, come nell’esempio che potete vedere qui sotto:

[kml_flashembed publishmethod=”dynamic” fversion=”10.0.0″ useexpressinstall=”true” movie=”https://www.danielealessandra.com/wp-content/uploads/2011/03/printScreen.swf” width=”480″ height=”400″ targetclass=”flashmovie”]Get Adobe Flash player
[/kml_flashembed]

Per avere qualcosa sullo Stage ho disegnato 10 cerchi. Spostate i cerchi con il Mouse e utilizzate il pulsante in alto a sinistra per salvare la Jpeg. Come sempre, i sorgenti sono a vostra disposizione per qualunque uso vogliate farne.

Inserisci nome e indirizzo email per iscriverti alla mia newsletter e ricevere il file immediatamente.
In breve: i dati inseriti in questo modulo saranno utilizzati per inviarti il link per scaricare il file che desideri, saranno conservati da un servizio esterno che si chiama MailChimp e in qualsiasi momento potrai cancellare la tua iscrizione al seguente link: https://danielealessandra.us7.list-manage.com/unsubscribe?u=546bebc381e525372d2120083&id=326af7d230.

Puoi leggere l'informativa completa cliccando sul link Privacy Policy che trovi dovunque su questa pagina, e comunque visitando in qualsiasi momento l'indirizzo https://www.danielealessandra.com/privacy-policy/
Ho letto e accetto l’informativa sulla privacy.

 

Loading spinner

5 replies on “Salvare un printScreen di un SWF”

HO BISOGNO DI AIUTO SEGUO LA TUA GUIDA E NON MI FUNZIONAA, IN PIU IL FILE FLA DEL DOWNLOAD NON SI APRE E NON POSSO VEDERE…

Loading spinner

Leave a Reply

Your email address will not be published. Required fields are marked *