170 likes | 288 Vues
This lecture focuses on utilizing PHP's GD Library for graphics manipulation and coordinate systems. It covers creating images with specific dimensions, allocating colors, and drawing shapes using the `imageline()` function. The lecture presents practical examples, including how to force browsers to refresh images to reflect changes without caching. Additionally, it discusses direct image output to the browser and the necessary header modifications for working with graphical data in PHP. This foundational knowledge is essential for further projects involving graphics and user interaction.
E N D
Media Software Design DIG 3134 Fall 2012 Lecture 15: Graphics J. Michael Moshell University of Central Florida Original image* by Moshell et al .
PHP Graphics The Coordinate System (for our example) x 800 y 600 Excerpt from DA Text
PHP Graphics Motivation: the RSL Pickup Graph
PHP Graphics The Coordinate System (for our example) x 0 800 y 0 600 600 0 yup = 600-y (so y=600 – yup) Excerpt from DA Text
PHP Graphics: The GD Library http://php.net/manual/en/ref.image.php Basic example: $Imagewidth=800;$Imageheight=600; $image=imagecreate($Imagewidth, $Imageheight); $colorWhite=imagecolorallocate($image, 255, 255, 255); $colorGreen=imagecolorallocate($image, 0, 200, 0); // x1 y1 x2 y2 imageline($image, 300, 200, 300,550, $coloGreen); imagepng($image,'graphout.png'); imagedestroy($image); print '<img src="graphout.png?lastmod=1">'; Excerpt from DA Text
PHP Graphics: The GD Library http://php.net/manual/en/ref.image.php Basic example: $Imagewidth=800;$Imageheight=600; $image=imagecreate($Imagewidth, $Imageheight); $colorWhite=imagecolorallocate($image, 255, 255, 255); $colorGreen=imagecolorallocate($image, 0, 200, 0); // x1 y1 x2 y2 imageline($image, 300, 200, 300,550, $coloGreen); imagepng($image,'graphout.png'); imagedestroy($image); print '<img src="graphout.png?lastmod=1">'; Do this to force the browser not to cache the png file. If it is cached, you won't see changes ... frustrating. Excerpt from DA Text
PHP Graphics: The GD Library http://php.net/manual/en/ref.image.php Basic example: $Imagewidth=800;$Imageheight=600; $image=imagecreate($Imagewidth, $Imageheight); $colorWhite=imagecolorallocate($image, 255, 255, 255); $colorGreen=imagecolorallocate($image, 0, 200, 0); // x1 y1 x2 y2 imageline($image, 300, 200, 300,550, $coloGreen); imagepng($image,'graphout.png'); imagedestroy($image); print '<img src="graphout.png?lastmod=1">'; Do this to force the browser not to cache the png file. If it is cached, you won't see changes ... frustrating. NOTE: This sometimes sorta works Excerpt from DA Text
Project 4: Cowpies Examine the cowpie1 prototype. Behavior Code Examine the Requirements for Project 4 markbeam.com
Project 4: Cowpies Requirements BEGIN with a database task: ** remember previous moves and replay them. So we will BEGIN (next week) with a tutorial database example called "address book" to build up your database skills, and also give you some code to steal / merge with cowpie1.php. Let's look at one more graphical issue. Can we write our .png DIRECTLY to browser?
PHP Graphics: The GD Library http://php.net/manual/en/ref.image.php Basic example: $Imagewidth=800;$Imageheight=600; $image=imagecreate($Imagewidth, $Imageheight); $colorWhite=imagecolorallocate($image, 255, 255, 255); $colorGreen=imagecolorallocate($image, 0, 200, 0); // x1 y1 x2 y2 imageline($image, 300, 200, 300,550, $coloGreen); imagepng($image,'graphout.png'); imagedestroy($image); print '<img src="graphout.png?lastmod=1">'; Can we write the image DIRECTLY to the browser, instead of into a file? Docs say we can, so we try it. Excerpt from DA Text
PHP Graphics: The GD Library http://php.net/manual/en/ref.image.php Basic example: $Imagewidth=800;$Imageheight=600; $image=imagecreate($Imagewidth, $Imageheight); $colorWhite=imagecolorallocate($image, 255, 255, 255); $colorGreen=imagecolorallocate($image, 0, 200, 0); // x1 y1 x2 y2 imageline($image, 300, 200, 300,550, $coloGreen); imagepng($image); imagedestroy($image); print '<img src="graphout.png?lastmod=1">'; Can we write the image DIRECTLY to the browser, instead of into a file? Docs say we can, so we try it. Excerpt from DA Text
GD direct to screen: ?? What's this? Any ideas?
GD direct to screen: ?? What's this? Any ideas? View Source
GD direct to screen: ?? Once you've announced to the browser that HTML is coming, it expects HTML. So what if we tried a different header?
So what if we tried a different header? PHP has a header function. We modify cowpie1.php: function htmlheader() { print "<html><body><form method='post'>"; } //main program $angle=$_POST['angle']; $velocity=$_POST['velocity']; if (!$angle) htmlheader(); //need HTML first time for form else header('Content-type: image/png');
Result: yes, it "works" ... but now it's not an HTML form any more, so there are no inputs (controls). It's not interactive. So ... we're better off embedding png in html.
FOR THURSDAY: The usual shoot-out model: GET your Group's BEST GAME ready to play! If you need help with Project 3, come SEE ME.