PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links 
search for in the  
previousmssql_select_dbming_setcubicthresholdnext
Last updated: Tue, 09 Jul 2002
view the printer friendly version or the printer friendly version with notes or change language to English | Brazilian Portuguese | Chinese | Czech | Dutch | Finnish | German | Hungarian | Italian | Japanese | Korean | Polish | Romanian | Russian | Spanish | Swedish | Turkish

LIX. Ming pour Flash

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concr�tement, TOUT ce qui est document� ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utiliser ce module � vos risques et p�rils.

Introduction

Ming est une librairie open-source (LGPL) qui vous permet de cr�er des animations au format Flash. Ming supporte toutes les fonctionnalit�s de Flash 4 : les formes (shapes), les gradients, les images bitmaps (JPEG et PNG), les morphing (transformations d'une forme en une autre), les textes, actions, sprites (mini animations), le streaming MP3 et les transformations de couleurs. Le seul ajout futur est celui des �v�nements sons.

Ming n'est pas un acronyme.

Notez que toutes les distances sp�cifi�es (longueurs, distances, tailles...) sont en "twips", c'est-�-dire 20 unit�s par pixels. C'est plus ou moins arbitraire, car le lecteur Flash fait une mise � l'�chelle avec les valeurs qui lui sont fournis dans la balise embed, ou la frame courante si la balise embed n'est pas utilis�e.

Ming propose de nombreux avantages par rapport � l'extension swf. Vous pouvez utiliser Ming sur tous les OS o� vous pouvez compiler le code, tandis que swf est limit� � Windows. Ming vous �vite la d�concertante complexit� du format SWF, en transformant les �l�ments des animations en objets PHP. Enfin, Ming est toujours en cours de d�veloppement et surveill� par son auteur : si vous souhaitez une nouvelle fonctionnalit�, dites le lui : .

Ming et tous les objets cit�s ont �t� ajout� en PHP 4.0.5.

Installation

Pour utiliser Ming avec PHP, vous devez d'abord installer la librairy Ming. Le code source et les instructions d'installation sont disponible sur la page d'accueil de Ming : , avec des exemples un tutorial et l'actualit� Ming.

T�l�chargez l'archive Ming. D�compressez la et allez dans le dossier Ming. Faites "make", puis "make install".

Cela va compiler le fichier libming.so et l'installer dans /usr/lib/, et copier ming.h into /usr/include/. Editez la ligne PREFIX= dans le fichier Makefile pour indiquer votre dossier d'installation.

Compilation CGI avec PHP (Unix)


       mkdir <phpdir>/ext/ming
       cp php_ext/* <phpdir>/ext/ming
       cd <phpdir>
       ./buildconf
       ./configure --with-ming <other config options>
       Compilez et installez PHP comme d'habitude.
       Red�marrez votre serveur web si n�cessaire.
      

Compilation en module avec PHP (Unix)

t�l�chargez php_ming.so.gz. D�compressez le et copiez le dans votre dossier de modules PHP (vous pouvez trouver votre dossier de module PHP en utilisant la commande php-config --extension-dir). Ensuite, ajoutez la ligne extension=php_ming.so dans votre fichier php.ini, ou bien ajoutez dl('php_ming.so'); en haut de tous vos scripts Ming.

Comment utiliser Ming

Ming introduit 13 objet en PHP. Pour les utilisez, vous devez �tre familier avec les objets.

Table des mati�res
ming_setcubicthreshold --  Set cubic threshold (?)
ming_setscale --  Set scale (?)
ming_useswfversion --  Use SWF version (?)
SWFAction -- Cr�e une nouvelle action.
SWFBitmap->getHeight -- Retourne la hauteur d'une bitmap.
SWFBitmap->getWidth -- Retourne la largeur d'une bitmap.
SWFBitmap -- Cr�e un objet bitmap
swfbutton_keypress --  Returns the action flag for keyPress(char)
SWFbutton->addAction -- Ajoute une action au bouton
SWFbutton->addShape -- Ajoute une forme � un bouton
SWFbutton->setAction -- Assigne l'action du bouton
SWFbutton->setDown -- Alias de addShape(shape, SWFBUTTON_DOWN)
SWFbutton->setHit -- Alias de addShape(shape, SWFBUTTON_HIT)
SWFbutton->setOver -- Alias de addShape(shape, SWFBUTTON_OVER)
SWFbutton->setUp -- Alias de SWFbutton->addShape(shape, SWFBUTTON_UP)
SWFbutton -- Cr�e un nouveau bouton.
SWFDisplayItem->addColor -- Ajoute une couleur � une transoformation.
SWFDisplayItem->move -- D�place un objet en coordonn�es relatives.
SWFDisplayItem->moveTo -- D�place un objet en coordonn�es globales.
SWFDisplayItem->multColor -- Multiplie la couleur de transformation.
SWFDisplayItem->remove -- Supprime un objet d'une animation
SWFDisplayItem->Rotate -- Fait tourner une forme relativement.
SWFDisplayItem->rotateTo -- Tourne un objet en angle absolu.
SWFDisplayItem->scale -- Etire un objet relativement.
SWFDisplayItem->scaleTo -- Etire un objet en coordonn�es globales.
SWFDisplayItem->setDepth -- Modifie la place en profondeur (z-order)
SWFDisplayItem->setName -- Nomme un objet
SWFDisplayItem->setRatio -- Modifie le ratio de l'objet.
SWFDisplayItem->skewX -- Incline suivant les X relativement.
SWFDisplayItem->skewXTo -- Incline suivant les X.
SWFDisplayItem->skewY -- Incline suivant les Y relativement.
SWFDisplayItem->skewYTo -- Incline suivant les Y.
SWFDisplayItem -- Cr�e un nouvel objet d'affichage displayitem.
SWFFill->moveTo -- D�place l'origine de l'objet SWFFill
SWFFill->rotateTo -- Tourne la forme
SWFFill->scaleTo -- Modifie l'�chelle de la forme
SWFFill->skewXTo -- Incline (abscisses)
SWFFill->skewYTo -- Incline (ordonn�es)
SWFFill -- Cr�e un objet de remplissage
swffont->getwidth -- Retourne la taille de la cha�ne
SWFFont -- Charge une police
SWFGradient->addEntry -- Ajoute une couleur � la liste du gradient.
SWFGradient -- Cr�e un objet gradient
SWFMorph->getshape1 -- S�lectionne la forme de d�part
SWFMorph->getshape2 -- S�lectionne la forme de fin
SWFMorph -- Cr�e un morphing.
SWFMovie->add -- Ajoute un objet dans une animation.
SWFMovie->nextframe -- Passe � l'image suivante.
SWFMovie->output -- Envoie votre animation au navigateur.
SWFMovie->remove -- Supprime un objet d'une animation.
SWFMovie->save -- Sauve dans un fichier.
SWFMovie->setbackground -- Modifie la couleur de fond.
SWFMovie->setdimension -- Modifie les dimensions de l'animation.
SWFMovie->setframes -- Modifie le nombre total d'images dans l'animation.
SWFMovie->setrate -- Modifie la vitesse de l'animation.
SWFMovie->streammp3 -- Envoie un fichier MP3 en streaming.
SWFMovie -- Cr�e un objet 'animation'.
SWFShape->addFill -- Ajoute un remplissage plein � la forme.
SWFShape->drawCurve -- Dessine une courbe relativement.
SWFShape->drawCurveTo -- Dessine une courbe.
SWFShape->drawLine -- Dessine une ligne relativement.
SWFShape->drawLineTo -- Dessine une ligne.
SWFShape->movePen -- D�place le stylo relativement.
SWFShape->movePenTo -- D�place le stylo.
SWFShape->setLeftFill -- Modifie la couleur de rast�risation de gauche.
SWFShape->setLine -- Modifie le style de ligne de la forme.
SWFShape->setRightFill -- Modifie la couleur de rast�riation de droite.
SWFShape -- Cr�e une nouvelle forme.
SWFSprite->add -- Ajoute un objet � un sprite
SWFSprite->nextframe -- Va � la prochaine image du sprite.
SWFSprite->remove -- Supprime un objet dans un sprite
SWFSprite->setframes -- Fixe le nombre maximum d'image dans le sprite.
SWFSprite -- Cr�e un sprite
SWFText->addString -- Ajoute du texte
SWFText->getWidth -- Calcule la longueur d'une cha�ne
SWFText->moveTo -- D�place le stylo de texte
SWFText->setColor -- Modifie la couleur de la police
SWFText->setFont -- S�lectionne la police courante
SWFText->setHeight -- Modifie la hauteur de la police courante
SWFText->setSpacing -- Modifie l'espacement de police
SWFText -- Cr�e un nouvel objet texte.
SWFTextField->addstring -- Ajoute au texte
SWFTextField->align -- Modifie l'alignement du texte
SWFTextField->setbounds -- S�lectionne la largeur et hauteur du champs
SWFTextField->setcolor -- Modifie la couleur du champs texte
SWFTextField->setFont -- Modifie la police du champs
SWFTextField->setHeight -- Modifie la hauteur de la police du champs texte.
SWFTextField->setindentation -- Modifie l'indentation de la premi�re ligne.
SWFTextField->setLeftMargin -- Modifie la marge de gauche.
SWFTextField->setLineSpacing -- Modifie l'espacement de lignes.
SWFTextField->setMargins -- Modifie les marges du champs texte.
SWFTextField->setname -- Nomme le champs texte
SWFTextField->setrightMargin -- Modifie la marge de droite.
SWFTextField -- Cr�e un nouveau champs texte
User Contributed Notes
Ming pour Flash
add a note about notes
[email protected]
04-Aug-2001 12:17

// Simple button with link

<?php
Ming_setScale(1.0);

function makeRect($r, $g, $b){
$s = new SWFShape();
$s->setRightFill($s->addFill($r, $g, $b));
$s->movePenTo(-100,-20);
$s->drawLineTo(100,-20);
$s->drawLineTo(100,20);
$s->drawLineTo(-100,20);
$s->drawLineTo(-100,-20);
return $s;
}

// Set Font
$font = new SWFFont("test.fdb");
$text1 = new SWFText();
$text1->setFont($font);
$text1->moveTo(155, 410);
$text1->setColor(0x00, 0x00, 0x00);
$text1->setHeight(28);
$text1->addString("php.net");
$b1 = new SWFButton();
$b1->setUp(makeRect(0xff, 0, 0));
$b1->setOver(makeRect(0xcc, 0, 0));
$b1->setDown(makeRect(0, 0, 0xaa));
$b1->setHit(makeRect(0, 0, 0));
$b1->addAction(new SWFAction("getURL(' 'phpsite');"),
SWFBUTTON_MOUSEUP);

$m = new SWFMovie();
$m->setDimension(1000,1000);
$m->setBackground(0xcc, 0xcc, 0xcc);

$i = $m->add($b1);
$m->add($text1);
$i->setName("phpsite");
$i->moveTo(200,400);

header("Content-type: application/x-shockwave-flash");
$m->output();
?>

[email protected]
20-Aug-2001 06:50

//In quicktime, movies may be exported as jpeg or png
//This object will convert any movie that has been saved as a group of images into
//an swf file. The frame rate and other attributes can be controlled

$path = "my_movie_dir"; //relative path to the jpg/png or bmp files
$frame_rate=30; //frame rate of the flash movie
$quality=50; //image quality during conversion (only valid if not jpeg)
$skip_rate=5; //how many frames to skip
set_time_limit("600"); //this could take some time

$converter=new images_to_swf($path,$frame_rate,$skip_rate);

//$converter->convert_images(70); //Use this if using non jpeg files or decreasing the quality

$converter->make_movie();//Make the movie

//Do two things with it
$converter->save_movie("my_movie_dir/my_movie.swf");
$converter->output_movie();

class images_to_swf {

var $path; //path to the image files
var $skip_rate;
var $movie;
var $images=array();

function images_to_swf($path,$frame_rate=30,$skip_rate=5) {
$this->path=$path;
$this->skip_rate=$skip_rate;

$this->movie=new swfmovie ();
$this->movie->setrate ($frame_rate);
}

function convert_images($quality=80,$delete_old_files=1) {
$main = opendir($this->path);
rewinddir($main);
//first convert to jpeg (if we have to)
//also change the quality
while($filename = readdir($main)) {

//only use valid file types
if (ereg("(png|bmp|jpg|jpeg)\$",$filename)) {
$file_path=$this->path."/".$filename;

if (ereg("png\$",$filename)) $temp_img=imagecreatefrompng ($file_path);
else if (ereg("bmp\$",$filename)) $temp_img=imagecreatefrompng ($file_path);
else if (ereg("(jpg|jpeg)\$",$filename)) $temp_img=imagecreatefromjpeg ($file_path);

if (ereg("(png|bmp)\$",$filename)) {
if ($delete_old_files) unlink($file_path);
$new_file_path=$file_path.".jpg";
}
else $new_file_path=$file_path;

ImageJPEG($temp_img,$new_file_path,$quality);

//echo "Converted $filename to $new_file_path at quality $quality<br />";
}
}
}

function make_movie() {
$main = opendir($this->path);
rewinddir($main);
//Get all valid jpegs
while($filename = readdir($main)) {
if (ereg("(jpg|jpeg)\$",$filename)) {
$file_path=$this->path."/".$filename;
$valid_paths[]=$file_path;
}
}

//Put jpegs in order
sort($valid_paths);

//then create the movie
for ($a=0; $a<count($valid_paths); $a=$a+$this->skip_rate) {
$fp = fopen($valid_paths[$a],"rb");
$this->images[$a] = fread($fp,999999);
fclose($fp);
$this->movie->add(new swfbitmap($this->images[$a]));
$this->movie->nextframe();
//echo "Added ".$valid_paths[$a]." to the movie<br />\n";
}
}

function save_movie($file_name) {
$this->movie->save($file_name);
}

function output_movie() {
header('Content-type: application/x-shockwave-flash');
$this->movie->output();
}
}

[email protected]
26-Dec-2001 03:42

You can get several .fdb font files from
ceoATl-i-eDOTcom
20-Apr-2002 09:15

Like, the build instructions are for building from CVS, I think...

Mere mortals can just do:
cd ming-x.y.z (xyz is version)
make static
make install
ldconfig (you might need do use "whereis ldconfig" to find it, and then use the full path)
cd ../php-x.y.z
./configure --with-ming ...

And don't be copying the "new" ming code into your PHP dir like the ming instructions say to do. That will just mess you up.

add a note about notes
previousmssql_select_dbming_setcubicthresholdnext
Last updated: Tue, 09 Jul 2002
show source | credits | stats | mirror sites
Copyright © 2001, 2002 The PHP Group
All rights reserved.
This mirror generously provided by:
Last updated: Sat Aug 31 06:19:44 2002 CEST