1 / 20

PHP Création et manipulation d'images

PHP Création et manipulation d'images. Jérôme CUTRONA jerome.cutrona@univ-reims.fr. Préambule. L'utilisation habituelle de PHP consiste à produire des pages HTML.

jolie
Download Presentation

PHP Création et manipulation d'images

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PHPCréation et manipulation d'images Jérôme CUTRONA jerome.cutrona@univ-reims.fr Programmation Web 2011-2012

  2. Préambule • L'utilisation habituelle de PHP consiste à produire des pages HTML. • Grâce à la bibliothèqueGD, 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 Programmation Web 2011-2012

  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 Programmation Web 2011-2012

  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); Programmation Web 2011-2012

  5. Création d'une image (vide) resourceimageCreate ( intwidth, intheight ) construit une image vide de largeur width et de hauteur heightet retourne son identifiant.L'image est à couleurs indexées.Retourne false en cas d'échec. resourceimageCreateTrueColor ( intwidth, intheight ) construit une image vide de largeur width et de hauteur heightet retourne son identifiant.L'image est à couleurs "réelles" (24bits).Retourne false en cas d'échec. boolimageDestroy ( resourceimage ) libère la mémoire associée à image Programmation Web 2011-2012

  6. Création d'une image (fichier) resourceimageCreateFromGIF ( string nom ) construit une image à partir du fichier GIF nom resourceimageCreateFromJPEG ( string nom ) construit une image à partir du fichier JPEG nom resourceimageCreateFromPNG ( string nom ) construit une image à partir du fichier PNG nom resourceimageCreateFromGD[2] ( string nom ) construit une image à partir du fichier GD[2] nom Programmation Web 2011-2012

  7. Production d'une image boolimageGIF (resourceimage [, string fname]) construit un fichier GIF fname à partir de image boolimageJPEG (resourceimage [, string fname]) construit un fichier JPEG fname à partir de image boolimagePNG (resourceimage [, string fname]) construit un fichier PNG fname à partir de image boolimageGD[2] (resourceimage [, string fname]) construit un fichier GD[2] fname à partir de image  Si fname est absent, le contenu est transmis Programmation Web 2011-2012

  8. Allocation de couleurs intimageColorAllocate ( resourceim, intR, intG, intB) construit une couleur (R, G, B) pour l'image imet retourne son identifiant. 0 ≤R≤ 2550 ≤G≤ 2550 ≤B≤ 255 Programmation Web 2011-2012

  9. Allocation de couleurs intimageColorAllocateAlpha ( resource im, intR, intG, intB,intA) construit une couleur (R, G, B, A) pour l'image imet retourne son identifiant.0 ≤R≤ 2550 ≤G≤ 2550 ≤B≤ 2550 ≤A≤ 127 (transparence de la couleur) Programmation Web 2011-2012

  10. Copie redimensionnée d'images boolimageCopyResized (resourcedst_im, resourcesrc_im,intdst_x,intdst_y, intsrc_x, intsrc_y,intdst_w, intdst_h, intsrc_w, intsrc_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. boolimageCopyResampled ( … ) remplace l'approximation par un ré-échantillonnage Programmation Web 2011-2012

  11. Dessiner dans une image • intimageColorAllocate ( resource image,intred, intgreen, intblue) • boolimageArc( resource image,intcx, intcy,intwidth, intheight,intstart, intend, intcolor) • boolimageLine ( resourceimage,intx1, inty1,intx2, inty2, intcolor) • boolimageString ( resource image, intfont,intx, inty, string s, intcolor) Programmation Web 2011-2012

  12. Création d'images à la volée <imgsrc="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); Programmation Web 2011-2012

  13. Introduction d’une vision objet ? resource représente l’entité image manipulée Programmation Web 2011-2012 resourceimageCreateTrueColor ( intwidth, intheight ) intimageColorAllocate ( resource image, … boolimageArc( resource image, … boolimageLine ( resourceimage, … boolimageString ( resource image, … boolimageDestroy ( resourceimage )

  14. Encapsulation objet Programmation Web 2011-2012 class GDImage{ // @var resource $_resource image identifier private$_resource= null ; privatefunction__construct() { } public function__destruct() { if (!is_null($this->_resource)) imageDestroy($this->_resource) ; }

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

  16. Encapsulation objet : usine Programmation Web 2011-2012 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= @$functionName($filename)) === false) { throw new Exception("unable to load file '{$filename}'") ; } $image->_resource= $tmp ; return $image ; } elsethrow new Exception("unknown filetype") ; } elsethrow new Exception("{$filename} : no such file") ; }

  17. Encapsulation objet : constantes Programmation Web 2011-2012 /**      * @var array      */ privatestatic$_factory_types=array( self::GD, self::GD2PART, self::GD2, self::GIF, self::JPEG, self::PNG, self::WBMP, self::XBM, self::XPM, ) ;

  18. Encapsulation objet : usine Programmation Web 2011-2012 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' ;

  19. Création d'images : vision objet <imgsrc="img.php" alt="Mon image" height="152"width="210"> <?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 • Peut dépendre de paramètres GET : • img.php?t=Coucou • img.php?r=10&v=120&b=255 • img.php?i=im.jpg • … Programmation Web 2011-2012

  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 Programmation Web 2011-2012

More Related