11:20:16 Programmation Web 2011-2012 1 PHP Création et manipulation d'images Jérôme CUTRONA

Slides:



Advertisements
Présentations similaires
² = 8,16 p
Advertisements

Leçon 3: Logiciels et domaines d’application de l’informatique
Les images Exposé – exemple 2.
JNO - Reims - 07/06/2012 Agnès BINET Responsable de lObservatoire Des Etudiants Comment améliorer les taux de réponse des enquêtes IP ?
Cours de C – Séance dexercices 19 Octobre Objectif Ecrire un serveur HTTP Sans gérer la partie réseau, on utilisera un utilitaire pour cela Serveur.
Cours de C – Séance dexercices 02 Octobre Protocole: client Protocole : – Requête client : GET /test.html HTTP/1.1\r\n Host: nom_de_l_hote\r\n Parameter:
SI28 FLASH MX Partie 1 Jérémy Dufetre - Ludovic Pilache.
Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 PHP Traitement Graphique.
PhotoManager eXtreme Présentation IceCream team Besoins Étude existant Technologies Découpage des tâches Conclusion.
AXES DE TRAVAIL LA MATERNELLE.
HTML Les types de balises
10:59:29 Programmation Web Programmation Web : PHP Jérôme CUTRONA
Programmation Web : Protocole HTTP
11:16:331 Programmation Web Programmation Web : Formulaires HTML Jérôme CUTRONA
Jérôme CUTRONA PHP et bases de données Jérôme CUTRONA 01:07:51 Programmation Web
PhpMyAdmin 01:08:02 Programmation Web
Jérôme CUTRONA PHP objet Jérôme CUTRONA 01:08:01 Programmation Web
Bases de données Objet singleton pour la connexion
Bases de données Objet singleton pour la connexion
… mais pour qui, pour quoi ? … mais pour qui, pour quoi ? Internet, un outil pour la classe d'histoire…
Emploi d’un logiciel de présentation graphique : PowerPoint
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Jenn Larose Period 6 December 16, La Nouvelle Orleans a été fondée le 7 mai 1718.
Comprendre l’environnement Web
Avancement du projet iziGuide 17/05/2010 CDP: LE Van Ngoc.
Symfony2.
Xavier Tannier Module de Programmation Web Introduction.
Architecture Logicielle Les supports d’applications
SQL Injection Réalisée par: BEN NASR Houssem GMATI Idriss HADDAD Mohamed Aymen HAKIM Youssef.
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
Bureau de linformatique scolaire (BIS) Bienvenue 1.
Sécurité et Vie Privée Dans les Réseaux Sociaux
Aplications bureautiques dans les travaux scolaires.
Première CTP le 4 décembre Nouvelle CTP depuis le 1 er février RTM milieu de cette année.
Applications web1 Cours Web Services ISIMA 3F3. Applications web2 JavaScript Inventé par Netscape... sans rapport avec Java. Standardisé par l’ECMA, spécification.
Les images Exposé – exemple 2.
Le langage XHTML 420-S4W-GG Programmation Web Client
Internet et CD-ROM Récupération de l ’information : b Concept b Texte b Image.
Biologie – Biochimie - Chimie
Maître de stage : Nicolas Saby
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
PHP objet Jérôme CUTRONA 10:13:27 Programmation Web
Architecture d’une application WEB Statique:
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Encadré par : nomprénom Travail réalisé par : nomprénom Lycée :
Programmation Web : PHP
Les langages de programmation
Comic Life Préparé par: Robert Godwin, Barbara McLaughlin & Teresa Harrison.
Test.
ORGANISATION DE L’ENSEIGNEMENT Informatique et Sciences du Numérique.
Les différents formats d'image
ORGANISATION DE L’ENSEIGNEMENT
Premiers pas avec Flash
FLASH MX 1ère Séance. Introduction Création d’animation pour le Web, pouvant contenir une forte interactivité. Faible poids des fichiers. Compatible avec.
Image Ready. Plan 1. Présentation du logiciel 2. 5 points important 1. Transformation par souris 2. Optimisation d’image 3. Outil tranche 4. Outil carte.
Nicolas HO.  Installation, intégration et administration des équipements et des services informatiques  Maintien de la qualité des services informatiques.
INF2005– Programmation web– A. Obaid Les cartes. INF2005– Programmation web– A. Obaid Images cliquables Outil permettant d'effectuer des liens à partir.
Test.
Test.
test
Cahier des charges.
I- ANALYSE DU BESOIN / Plan
PHP Création et manipulation d'images
TEST.
Un été de porcelaine ( Mort Shuman )
PHP Création et manipulation d'images
PAGE 1 PAGE 2.
Catherine Cyrot - bibliothèques numériques - cours 3
Test test.
Transcription de la présentation:

11:20:16 Programmation Web PHP Création et manipulation d'images Jérôme CUTRONA

211:20:16 Programmation Web Préambule L'utilisation habituelle de PHP consiste à produire des pages HTML. 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. 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 Formats d'images accessibles sont GIF, JPEG et PNG Possibilités offertes par la création/manipulation d'images en PHP : Possibilités offertes par la création/manipulation d'images en PHP : redimensionnement à la volée redimensionnement à la volée CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) insertion de texte dynamique insertion de texte dynamique

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

411:20:16 Programmation Web 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) ; 99, 99, $red) ; // Envoi vers le navigateur header('Content-Type: image/png') ; imagePNG($im) ; // Libération mémoire imageDestroy($im) ;

511:20:16 Programmation Web 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

611:20:16 Programmation Web 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

711:20:16 Programmation Web 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 Si fname est absent, le contenu est transmis

811:20:16 Programmation Web Allocation de couleurs int imageColorAllocate ( resource im, int R, int G, int B ) 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

911:20:16 Programmation Web Allocation de couleurs int imageColorAllocateAlpha ( resource im, int R, int G, int B, int A ) 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)

1011:20:16 Programmation Web 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

1111:20:16 Programmation Web Dessiner dans une image int imageColorAllocate ( resource image, int red, int green, int blue ) 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 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 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 ) bool imageString ( resource image, int font, int x, int y, string s, int color )

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

Introduction dune vision objet ? resource imageCreateTrueColor ( int width, int height ) resource imageCreateTrueColor ( int width, int height ) int imageColorAllocate ( resource image, … int imageColorAllocate ( resource image, … bool imageArc ( resource image, … bool imageArc ( resource image, … bool imageLine ( resource image, … bool imageLine ( resource image, … bool imageString ( resource image, … bool imageString ( resource image, … bool imageDestroy ( resource image ) bool imageDestroy ( resource image ) 1311:20:16 Programmation Web resource représente lentité image manipulée

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

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

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

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

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

1911:20:16 Création d'images : vision objet <img src="img.php" alt="Mon image" alt="Mon image" height="152" width="210"> height="152" width="210"> <?php require_once('gdimage.class.php') ; // Création $im = GDImage::createFromSize(100, 100) ; = GDImage::createFromSize(100, 100) ; // Manipulations $red = $im->colorAllocate(255, 0, 0) ; $im->filledRectangle(0, 0, 99, 99, $red) ; 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=Coucouimg.php?t=Coucou img.php?r=10&v=120&b=255img.php?r=10&v=120&b=255 img.php?i=im.jpgimg.php?i=im.jpg …

Comparaison non objet / objet 2011:20:16 Programmation Web <?php // Création $im = imageCreate(100, 100) ; // Manipulations $red = imageColorAllocate($im, 255, 0, 0) ; 255, 0, 0) ; imageFilledRectangle($im, 0, 0, 99, 99, $red) ; 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) ; = GDImage::createFromSize(100, 100) ; // Manipulations $red = $im->colorAllocate(255, 0, 0) ; $im->filledRectangle(0, 0, 99, 99, $red) ; 99, 99, $red) ; // Envoi vers le navigateur header('Content-type: image/png') ; $im->PNG() ; // Libération mémoire // Automatique, à la destruction de $im