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