La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

PHP Création et manipulation d'images

Présentations similaires


Présentation au sujet: "PHP Création et manipulation d'images"— Transcription de la présentation:

1 PHP Création et manipulation d'images
Jérôme CUTRONA 17:24:52 Programmation Web

2 Préambule L'utilisation habituelle de PHP consiste à produire des pages HTML. Grâce à la bibliothèque GD, PHP peut produire des images enregistrées sur disque ou directement transmises au navigateur du client. Formats d'images accessibles sont GIF, JPEG et PNG Possibilités offertes par la création/manipulation d'images en PHP : redimensionnement à la volée CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) insertion de texte dynamique 17:24:52 Programmation Web

3 Algorithme général de création
Création d'une image : nouvelle à partir d'un fichier Manipulations de l'image dessin texte Production de l'image finale : dans un fichier envoi vers le navigateur Libération mémoire 17:24:52 Programmation Web

4 Algorithme général de création
<?php // Création $im = imageCreateTrueColor(100, 100) ; // Manipulations $red = imageColorAllocate($im, 255, 0, 0) ; imageFilledRectangle($im, 0, 0, 99, 99, $red) ; // Envoi vers le navigateur header('Content-Type: image/png') ; imagePNG($im) ; // Libération mémoire imageDestroy($im) ; 17:24:52 Programmation Web

5 Création d'une image (vide)
resource imageCreate ( int width, int height ) construit une image vide de largeur width et de hauteur height et retourne son identifiant. L'image est à couleurs indexées. Retourne false en cas d'échec. resource imageCreateTrueColor ( int width, int height ) construit une image vide de largeur width et de hauteur height et retourne son identifiant. L'image est à couleurs "réelles" (24bits). Retourne false en cas d'échec. bool imageDestroy ( resource image ) libère la mémoire associée à image 17:24:52 Programmation Web

6 Création d'une image (fichier)
resource imageCreateFromGIF ( string nom ) construit une image à partir du fichier GIF nom resource imageCreateFromJPEG ( string nom ) construit une image à partir du fichier JPEG nom resource imageCreateFromPNG ( string nom ) construit une image à partir du fichier PNG nom resource imageCreateFromGD[2] ( string nom ) construit une image à partir du fichier GD[2] nom 17:24:52 Programmation Web

7 Production d'une image bool imageGIF (resource image [, string fname]) construit un fichier GIF fname à partir de image bool imageJPEG (resource image [, string fname]) construit un fichier JPEG fname à partir de image bool imagePNG (resource image [, string fname]) construit un fichier PNG fname à partir de image bool imageGD[2] (resource image [, string fname]) construit un fichier GD[2] fname à partir de image  Si fname est absent, le contenu est transmis 17:24:52 Programmation Web

8 Allocation de couleurs
int imageColorAllocate ( resource im, int R, int G, int B ) construit une couleur (R, G, B) pour l'image im et retourne son identifiant. 0 ≤ R ≤ ≤ G ≤ ≤ B ≤ 255 17:24:52 Programmation Web

9 Allocation de couleurs
int imageColorAllocateAlpha ( resource im, int R, int G, int B, int A ) construit une couleur (R, G, B, A) pour l'image im et retourne son identifiant. 0 ≤ R ≤ ≤ G ≤ ≤ B ≤ ≤ A ≤ 127 (transparence de la couleur) 17:24:52 Programmation Web

10 Copie redimensionnée d'images
bool imageCopyResized ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h ) copie une portion rectangulaire de src_im dans une portion rectangulaire dst_im. Si les portions sont de taille différente, l'approximation se fait à l'échantillon le plus proche. bool imageCopyResampled ( … ) remplace l'approximation par un ré-échantillonnage 17:24:52 Programmation Web

11 Dessiner dans une image
int imageColorAllocate ( resource image, int red, int green, int blue ) bool imageArc ( resource image, int cx, int cy, int width, int height, int start, int end, int color ) bool imageLine ( resource image, int x1, int y1, int x2, int y2, int color ) bool imageString ( resource image, int font, int x, int y, string s, int color ) 17:24:52 Programmation Web

12 Création d'images à la volée
<img src="img.php" alt="Mon image" height="152" width="210"> Peut dépendre de paramètres GET : img.php?t=Coucou img.php?r=10&v=120&b=255 img.php?i=im.jpg <?php // Création $im = imageCreate(100, 100) ; // Manipulations $red = imageColorAllocate($im, 255, 0, 0) ; imageFilledRectangle($im, 0, 0, 99, 99, $red) ; // Envoi vers le navigateur header('Content-Type: image/png') ; imagePNG($im) ; // Libération mémoire imageDestroy($im) ; 17:24:52 Programmation Web

13 Introduction d’une vision objet ?
resource imageCreateTrueColor ( int width, int height ) int imageColorAllocate ( resource image, … bool imageArc ( resource image, … bool imageLine ( resource image, … bool imageString ( resource image, … bool imageDestroy ( resource image ) resource représente l’entité image manipulée 17:24:52 Programmation Web

14 Encapsulation objet class GDImage { resource $_resource image identifier private $_resource = null ; private function __construct() { } public function __destruct() { if (!is_null($this->_resource)) imageDestroy($this->_resource) ; 17:24:52 Programmation Web

15 Encapsulation objet : usine
public static function createFromSize($x, $y, $truecolor=true) { $x = (int) $x ; $y = (int) $y ; $resource = false ; if ($truecolor) $resource $y) ; else $resource $y) ; if ($resource !== false) { $image = new self() ; $image->_resource = $resource ; return $image ; } else throw new LogicException("Failed to create GD resource") ; } 17:24:52 Programmation Web

16 Encapsulation objet : usine
public static function createFromFile($filename, $filetype) { if (is_file($filename)) { if (in_array($filetype, self::$_factory_types)) { $functionName = 'imageCreateFrom' . $filetype ; $image = new self() ; if (($tmp === false) { throw new Exception("unable to load file '{$filename}'") ; } $image->_resource = $tmp ; return $image ; } else throw new Exception("unknown filetype") ; } else throw new Exception("{$filename} : no such file") ; } 17:24:52 Programmation Web

17 Encapsulation objet : constantes
/** array */ private static $_factory_types = array( self::GD, self::GD2PART, self::GD2, self::GIF, self::JPEG, self::PNG, self::WBMP, self::XBM, self::XPM, ) ; 17:24:52 Programmation Web

18 Encapsulation objet : usine
class GDImage { const GD = 'gd' ; const GD2PART = 'gd2part' ; const GD2 = 'gd2' ; const GIF = 'gif' ; const JPEG = 'jpeg' ; const PNG = 'png' ; const WBMP = 'wbmp' ; const XBM = 'xbm' ; const XPM = 'xpm' ; 17:24:52 Programmation Web

19 Création d'images : vision objet
<img src="img.php" alt="Mon image" height="152" width="210"> Peut dépendre de paramètres GET : img.php?t=Coucou img.php?r=10&v=120&b=255 img.php?i=im.jpg <?php require_once('gdimage.class.php') ; // Création $im  = GDImage::createFromSize(100, 100) ; // Manipulations $red = $im->colorAllocate(255, 0, 0) ; $im->filledRectangle(0, 0, 99, 99, $red) ; // Envoi vers le navigateur header('Content-type: image/png') ; $im->PNG() ; // Libération mémoire // Automatique, à la destruction de $im 17:24:52 Programmation Web

20 Comparaison non objet / objet
<?php // Création $im = imageCreate(100, 100) ; // Manipulations $red = imageColorAllocate($im, 255, 0, 0) ; imageFilledRectangle($im, 0, 0, 99, 99, $red) ; // Envoi vers le navigateur header('Content-Type: image/png') ; imagePNG($im) ; // Libération mémoire imageDestroy($im) ; <?php require_once('gdimage.class.php') ; // Création $im  = GDImage::createFromSize(100, 100) ; // Manipulations $red = $im->colorAllocate(255, 0, 0) ; $im->filledRectangle(0, 0, 99, 99, $red) ; // Envoi vers le navigateur header('Content-type: image/png') ; $im->PNG() ; // Libération mémoire // Automatique, à la destruction de $im 17:24:52 Programmation Web


Télécharger ppt "PHP Création et manipulation d'images"

Présentations similaires


Annonces Google