[solved] Εξαγωγή mc σε αρχείο image (σε as2)

ActionScript και Flex Προγραμματισμός

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
athineos
Δημοσιεύσεις: 121
Εγγραφή: 01 Σεπ 2009 04:47
Επικοινωνία:

[solved] Εξαγωγή mc σε αρχείο image (σε as2)

Δημοσίευση από athineos » 24 Αύγ 2010 19:23

Σε AS2, πως μπορώ να κάνω export image το οπτικό αποτέλεσμα που έχει μια δεδομένη στιγμή το swf (ή εναλλακτικά κάποιο συγκεκριμένο mc)?

Χωρίς καμία διάθεση να προκαταβάλλω τον τρόπο, φαντάζομαι κάποια εμπλοκή θα έχει το bitmapData, αλλά δεν έχω ιδέα...
Τελευταία επεξεργασία από το μέλος athineos την 26 Αύγ 2010 17:18, έχει επεξεργασθεί 1 φορά συνολικά.

nkast
Δημοσιεύσεις: 137
Εγγραφή: 15 Νοέμ 2009 20:31
Επικοινωνία:

[solved] Εξαγωγή mc σε αρχείο image (σε as2)

Δημοσίευση από nkast » 24 Αύγ 2010 19:46

Ξέρω το PNGEncoder που ειναι ομως AS3.
Σε AS2 δεν γνωρίζω αν υπάρχει κατι.

Εχε υπόψη σου πως δεν θα μπορεσεις μεσα απο το flash να σώσεις στο δισκο του χρήστη.
Μια λύση είναι να το στείλεις στον web server και ξανά πίσω ξεκινώντας ενα HTTP request.

athineos
Δημοσιεύσεις: 121
Εγγραφή: 01 Σεπ 2009 04:47
Επικοινωνία:

[solved] Εξαγωγή mc σε αρχείο image (σε as2)

Δημοσίευση από athineos » 25 Αύγ 2010 08:04

nkast έγραψε:Εχε υπόψη σου πως δεν θα μπορεσεις μεσα απο το flash να σώσεις στο δισκο του χρήστη.
Ασφαλώς... εξυπακούεται ότι δεν προσδοκώ να σώσω απευθείας στο δίσκο του χρήστη. Τα αρχεία φαντάζομαι θα καταλήξουν στο server φιλοξενίας.

nkast έγραψε:Ξέρω το PNGEncoder που ειναι ομως AS3.
Έχω ήδη κατασκευάσει σε as2 πρόγραμμα που ο χρήστης δημιουργεί ένα βιβλίο, τοποθετώντας και διαμορφώνοντας WYSIWYG σελίδα-σελίδα τα κείμενα και τις φωτογραφίες που θα περιέχει. Το πρόγραμμα αποθηκεύει/ανακτά τις οδηγίες και τα περιεχόμενα από ένα text αρχείο μέσα στο server.

Ενώ μπορώ να αναπαράξω οποιαδήποτε σελίδα μέσα στο flash, δεν έχω υπόψη μου πως μπορώ να αποθηκεύσω το οπτικό αποτέλεσμα σε μορφή εικόνας, ώστε να την παραλάβει στη συνέχεια το τυπογραφείο για να τυπώσει.

Έχω κι εγώ εντοπίσει κώδικα σε AS3 και τον έχω χρησιμοποιήσει μάλιστα για κάποια άλλη μου δουλειά. Μπορεί να μην έχω ευχέρεια στην as3, αλλά δοκιμάζοντας κάποιες μετατροπές λειτούργησε όπως ακριβώς ήθελα. Αντιλαμβάνεσαι όμως ότι εδώ δεν έχω την επιλογή να ανασκευάσω όλο τον as2 κώδικα σε as3... γιατί είναι αρκετά πολύπλοκος για τέτοια εγχειρήματα.

Σε ευχαριστώ πολύ.



Να ελπίζω ότι ξέρει κανείς κάποια λύση σε as2 ή... τη στρούμφισα;;;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

[solved] Εξαγωγή mc σε αρχείο image (σε as2)

Δημοσίευση από korgr » 25 Αύγ 2010 10:07

athineos έγραψε:
Να ελπίζω ότι ξέρει κανείς κάποια λύση σε as2 ή... τη στρούμφισα;;;
Μηπως σε βοηθαει καθολου κατι τετοιο;
http://www.quasimondo.com/archives/000645.php

athineos
Δημοσιεύσεις: 121
Εγγραφή: 01 Σεπ 2009 04:47
Επικοινωνία:

[solved] Εξαγωγή mc σε αρχείο image (σε as2)

Δημοσίευση από athineos » 25 Αύγ 2010 10:33

Όσο κι αν είχα ψάξει δεν εντόπισα κάτι ανάλογο. Έχεις φοβερό μάτι στον ιστό. Μπράβο!
Από μια πρόχειρη πρώτη ματιά, νομίζω χτύπησες φλέβα.

Πρώτα θα το εξετάσω για να δω αν κάνει για τη δουλειά μου και μετά θα ενημερώσω εδώ.
Στο μεταξύ, κάθε άλλη πρόταση δεκτή.


thanx korgr.

athineos
Δημοσιεύσεις: 121
Εγγραφή: 01 Σεπ 2009 04:47
Επικοινωνία:

[solved] Εξαγωγή mc σε αρχείο image (σε as2)

Δημοσίευση από athineos » 25 Αύγ 2010 14:34

Το πρόγραμμα (προς έκπληξή μου) αποθηκεύει τις φωτογραφίες τοπικά στον Η/Υ του κατόχου.
Δυστυχώς όμως korgr, κάτι τέτοιο χτυπάει πλέον στο νέο security model του flash player 10 κι έτσι δεν λειτουργεί (αρχικά χτυπούσε σε εμένα και στη συνέχεια εντόπισα ότι υπάρχει και η σχετική αναφορά στο forum).

Θα εξετάσω κάποιες μετατροπές ώστε να αποθηκεύει το αρχείο, όχι τοπικά, αλλά στον server (όπως άλλωστε υπολόγιζα αρχικά), ωστόσο θα μου πάρει κάποιο χρόνο.


Αν υπάρχει κάποιος/κάποια που να έχει ιδέα τι άλλο θα μπορούσε να γίνει, το έχω πραγματικά ανάγκη
...
...

athineos
Δημοσιεύσεις: 121
Εγγραφή: 01 Σεπ 2009 04:47
Επικοινωνία:

[solved] Εξαγωγή mc σε αρχείο image (σε as2)

Δημοσίευση από athineos » 26 Αύγ 2010 17:14

ΟΚ το έλυσα.

Για όποιον στο μέλλον ενδιαφερθεί σχετικά, το επισυνάπτω και παρουσιάζω εδώ το script που εντόπισε ο korgr. Το script αυτό το έχει κατασκευάσει ο Mario Klingemann και δεν προορίζεται για επαγγελματική χρήση.

ΠΡΟΒΛΗΜΑΤΑ ΠΟΥ ΠΑΡΟΥΣΙΑΖΕΙ
Είναι κατασκευασμένο για να διαβάζει ένα movie clip και να το κάνει save as image τοπικά στον υπολογιστή του χρήστη. Ωστόσο αυτή η μεταφορά δεν επιτρέπεται πλέον από το νέο security model του flash player 10.
Αυτό που θα μπορούσε ενδεχομένως να γίνει, είναι να κάνει save as image μέσα στο server και να παραμένει εκεί για μελλοντική χρήση. Αυτό ήταν άλλωστε που αποσκοπούσα κι εγώ να κάνω.

Του έκανα λοιπόν κάποιες μικρομετατροπές ώστε να παρακάμψω το προβληματικό σημείο και να απλοποιήσω περισσότερο τη χρήση του. Ασφαλώς βέβαια δεν έχω το γνωστικό επίπεδο του συγγραφέα του script, για αυτό και η προσπάθειά μου ήταν με το ελάχιστο effort και τις λιγότερες μετατροπές, να κάνει τη δουλειά που χρειαζόμουν.


ΠΩΣ ΘΑ ΤΟ ΑΞΙΟΠΟΙΗΣΕΤΕ
Αρχικά ανοίξτε το zip αρχείο που έχω επισυνάψει.
Τα αρχεία index.html, sample.fla και sample.swf δεν αποτελούν μέρος του script. Ο κατάλογος "com" και το αρχείο "exportImage.as" είναι απαραίτητα να βρίσκονται στο σημείο που βρίσκεται το .fla που θα κάνετε compile και όχι στον server. Το BitmapExporter.php αντίθετα θα πρέπει να βρίσκεται στον server.

Για να κάνετε export σε image το movie clip σας, θα καλέσετε το πρόγραμμα μέσα από το fla με τις εξής δύο απλές εντολές:

Κώδικας: Επιλογή όλων

#include "exportImage.as"
exportImage(my_mc, "my_pic.jpg");
όπου my_mc είναι το όνομα του movie clip σας και "my_pic.jpg" το όνομα του παραγόμενου αρχείου εικόνας. Μπορείτε κατά τον ίδιο τρόπο να χρησιμοποιήσετε .png και .bmp αρχεία εικόνας.

Αν χρειάζεστε έλεγχο, μπορείτε να προσθέσετε ένα ή περισσότερα από τα παρακάτω:

Κώδικας: Επιλογή όλων

function progress(evt:Object):Void {
	progress_rate=Math.round(evt.current/evt.total*100)+"%";
	progress_status=evt.message;
}
function error(evt:Object):Void {
	delete onEnterFrame;
	error_mesg=evt.message;
}
function saved(evt:Object):Void {
	delete onEnterFrame;
	progress_rate="100%";
	progress_status = "Image file "+evt.fileName+" successfully exported";
}
Οι μεταβλητές progress_rate, progress_status και error_mesg είναι ενδεικτικές.
Εξυπακούεται ότι εσωτερικά στις functions μπορείτε να τις αξιοποιήσετε όπως εσείς κρίνετε καλύτερα.

ΔΟΚΙΜΗ
Μέσα στο zip έχω αφήσει τρία αρχεία (sample.fla, sample.swf και index.html) για να το δείτε στη πράξη και να κάνετε τις δοκιμές σας. Πριν το δικιμάσετε, μη ξεχάσετε να επιβεβαιώσετε ότι υπάρχουν δικαιώματα write στον server και επιπλέον στο php.ini ότι υπάρχει άφθονος χώρος για php_value post_max_size και php_value upload_max_filesize.



ΒΕΛΤΙΩΣΕΙΣ
Είμαι βέβαιος ότι κάποιος με περισσότερο χρόνο κι ένα καλύτερο γνωστικό επίπεδο από αυτό που διαθέτω, θα μπορούσε να καταφέρει μια πιο χρηστική προσαρμογή. Κάθε προσφορά θα ήταν χρήσιμη.

Ωστόσο επιβεβαιώνω ότι το συγκεκριμένο δουλεύει για την περίπτωση που αναζητάμε εδώ.
Συνημμένα
exportImage.zip
(157.1 KiB) Μεταφορτώθηκε 247 φορές

Απάντηση

Επιστροφή στο “ActionScript και Flex Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες