Enregistrer une image JPEG (D7)
Personne ne songe à fouiller les méthodes
de l'Xtra JavaConvert puisque Macromedia fournit une interface
à l'enregistrement Java, sous forme de MIAW. On affiche
cette fenêtre de dialogue par Fichier/Enregistrer
en Java...
Il semble bien qu'on ne puisse ici que convertir la totalité
de l'animation. Pourtant cette Xtra fournie gracieusement
avec Director cache parmi ces méthodes une fonction
des plus utiles. Regardons ça :
Dans la fenêtre message on demande à connaître
les méthodes de JavaConvert par le traditionnel put
interface(). Le Crapo par coquetterie utilise ici la nouvelle
notation Lingo.
put xtra "javaconvert".interface()
-- "xtra JavaConvert -- This Xtra provides java output
of Director movies
new object me
ConfigureTranslation object me, string MovieToTranslateName,
integer bScoreGoesInMediaFile, integer bAllMediaInMediaFile,
integer bConvertScripts, integer iJpegQual, string sImageCompression,
integer iSingleGifPalette, integer bListsContainIntsOnly,
integer bLoopTheMovie, integer optimizationSettings -- Sets
options for translation.
GetVersion object me -- returns a version number for this
Xtra
CheckMovie object me -- checks movie for errors. Returns
list of errors
TranslateMovie object me, string SourceFileName, string
MediaFileName -- Translates movie to Source and Media files.
Returns list of errors
TranslateScript object me, any scriptmember, string outputFileName
-- Translate a given script, Returns string translation
ExportMedia object me, string MovieToTranslateName, any
member, string outputFileName, integer OutputAsJpeg, integer
QualityPercentage, integer castlibNum -- Translate a given
media castmember (only image hooked up), Returns 0
CastMemForLineNumber object me, integer lineNumber -- Get
castmember index whose translation output into the source
file would include the given line number
GetTranslatedMovieName object me -- Gets the name of the
movie class. This may be different than the movie name if
it conflicts with some other exported symbol"
On fond ce que l'on voit là c'est l'ensemble des
méthodes que Director met en uvre lorsque l'on
manipule la MIAW "Enregistrer en Java". Mais peut-être
ne l'avez vous pas vu ! Il y a là dedans une méthode
de conversion "ExportMedia()"
Il n'entre pas dans le cadre de cet article de décrire
la mise en uvre des Xtras. Pour un commentaire détaillé
des informations retournées par la fonction interface(),
on se reportera aux anciens
articles du CrapoWeb sur les Xchoses. Par exemple sur
l'Xtra fileIO ou l'Xobjet MISC.
L'Xtra JavaConvert requiert la création d'une instance.
On baptise l'enfant à naître :"crapo".
crapo = xtra "javaConvert".new()
Pour utiliser la méthode ExportMedia() nous devons
lui passer plusieurs paramètres.
-string MovieToTranslateName
C'est le nom entre guillemets de l'animation en cours
d'abord. Ce nom ne doit pas contenir d'extension .dir
ou .dxr semble-t-il.
-any member
Un acteur bitmap à convertir.
-string outputFileName
Le nom et éventuellement le chemin du fichier
jpg à créer.
-integer OutputAsJpeg
C'est semble-t-il un booléen (1 ou 0) requis par
la fonction. (?).
-integer QualityPercentage,
un entier représentant la qualité de compression
JPEG. maximum 100% mais le temps de traitement d'une image
importante en sera rallongé !
-integer castlibNum
Le numéro de la distribution en cours.
Nous voilà prêt à créer notre
enregistrement d'image. Notre animation s'appelle "essai.dir".
C'est l'acteur bitmap n° 2 que nous voulons enregistrer.
Afin de laisser l'utilisateur choisir l'emplacement nous
l'interrogeons via FileXtra :
choix = FileSaveAsDialog ("", "sauvegarde.jpg", "Enregistrer
une copie dans :")
Puis dès lors que nous avons sa réponse sous
forme de chemin et de nom de fichier dans la variable "choix"
:
crapo.ExportMedia("essai", member 2, choix, 1, 75, 1)
La fonction retourne VOID (plutôt que zéro,
équivalent ?) si tout c'est bien passé :
put the result
-- <Void>
On détruit l'instance pour libérer la mémoire
:
crapo = 0
|