Library tutorials & articles
Image Generation on the FLY using PHP
- Introduction
- Getting Started
- Creating our image
- Displaying our image
- Generating the random number
- Changing the font
Creating our image
The first step to creating our image is to create a canvas to work with. We do this by using the imagecreate function, as shown below:
<?php
$img_number = imagecreate(100, 50);
?>
The imagecreate function creates a blank canvas. The width and height of the canvas are determined by the two parameters passed to the function respectively. So, in our example above, we have created a new image that is 100 pixels wide, by 50 pixels high.
The next step is to allocate the colours that will be used to generate our random number image. We use the imagecolorallocate function to do this. The imagecolorallocate function takes four arguments. The first is the image identifier, which in our case is $img_number. The last three arguments specify the RGB values of the colour that we are creating. RGB (red, green and blue) values range from 0 (the darkest) to 255 (the lightest). For example, black is 0, 0, 0 and white is 255, 255, 255. Let's create a couple of colours:
<?php
$img_number = imagecreate(100,50);
$white = imagecolorallocate($img_number,255,255,255);
$black = imagecolorallocate($img_number,0,0,0);
$grey_shade = imagecolorallocate($img_number,204,204,204);
?>
As you can see, we have created three new colour-allocated variables: $white, $black and $grey_shade. These will be used to create the different shapes and text for our image.
Now that we know how to allocate colours, why don't we add a rectangle or two to our image canvas?
<?php
$img_number = imagecreate(100,50);
$white = imagecolorallocate($img_number,255,255,255);
$black = imagecolorallocate($img_number,0,0,0);
$grey_shade = imagecolorallocate($img_number,204,204,204);
imagefill($img_number,0,0,$grey_shade);
ImageRectangle($img_number,5,5,94,44,$black);
ImageRectangle($img_number,0,0,99,49,$black);
?>
The imagefill function performs a complete fill of the canvas identified by the first argument, $img_number. Arguments two and three specify the x and y co-ordinates to start filling from. The last parameter is a variable created using the imagecolorallocate function.
Next, we draw two rectangles using the ImageRectangle function. The first argument to the ImageRectangle is a reference to a drawing canvas created using the imagecreate function. The next four arguments specify the top left-hand corner of the rectangle, as well as the lower right-hand corner. The last parameter is a reference to a colour, created using the imagecolorallocate function.
In our example, we have created a new image canvas, filled our canvas, and added some rectangles, but where is the image you might ask? Good question. At this point in time, our image is still stored in memory. It's really quite easy to display the image in a web browser, so let's do that now!!
Related articles
Related discussion
-
Create this kind of website
by maidentv (1 replies)
-
PHP London July Meetup
by webdeveloperit (1 replies)
-
Binary Studio | software development outsourcing Ukraine
by shane124 (4 replies)
-
SOFTWARE PHP WORK
by synctel (0 replies)
-
London PHP / MySQL Superstar needed!
by gatewaytechnolabs (1 replies)
Related podcasts
-
EarthClassMail.com - Moving from LAMP to .NET 3.5
Scott chats with Matt Davis, architect at EarthClassMail.com, about their move from a LAMP stack (Linux/Apache/mysql/PHP) to .NET 3.5. What's working, what's not, and what kinds of issues are they running into as their architect their solution.
Events coming up
-
Dec
3
The Auckland PHP December meetup
Auckland, New Zealand
Topic: Magento E-Commerce platform Speaker: Robert Popovic, LERO9, Robert is the Technical Director and co-founder of LERO9. Robert attended the Electrotechnical Faculty at The University of Belgrade where he graduated with a Masters in Computer Science and Information Technology. Robert has worked exclusively in the field of web and software development throughout his career.
Hi
I saw them using a image-on-the-fly script as (at www.worldspaceasia.com):
<a href="modules.php?name=Content&pa=listpagescategories&cid=2"><img src="includes/img.php?title=Western Classical/Jazz&textsize=8&border=1&imgype=randomTTF" border="0" alt="Western Classical/Jazz"></a>
The :
title=
imgype=randomTTF
are crucial!
So whts the secret of the img.php?
Regards
Very good tutorial and useful. But am wondering, if it can be converted to be used as a counter in a website, to get the number of visitors to the site. It will then start from a certain number and count sequencially upwards. It could start from 1 or 10.
Thanks
I used the script it was good. The random script is accessed as an image in another script, then how to access the number displayed on the image so that i can check that the user entered the correct displayed number.
very well-written & useful javascript:smilie('
')
thanx 4 ur time!
thanx 4 ur time!
hi:
I copied your code to my PHP4.3.x+Windows2000Server+Apache2, The picture does not show at a browser, only white page. I checked the sapce befor the "<?php" carefully.
In fact, befor I have a similar bad experience that I can't show picture at my machine. But If I put the code to a linux machine , it works. The situation is all my other php codes, including session,mysql, work fine. Only for this method, header(header("Content-type:image/jpeg"), the send out a image, it does not work.
I guess there must be some setting parameters problem at apache2. Does anyone have any idea?
Thanks
I think your posting in the wrong place buddy! this is for creating and showing PHP images on-the-fly not VB! If you DO really want to take a PHP created image and put it in a VB form you can either post back here or email me at webmaster@isgeeky.com
To my knowledge it is not possible to send an image created on-the-fly using PHP without the content-type header being modified. Why do you not want to use the "Header("Content-Type: Image/jpg")" code?
Actually I have seen your image generation on the fly and i have used it on my project. But i facing a problem is i don't want to use a Header("Content-Type: Image/jpg") . So if you have link please send me on sshti123@hotmail.com.
Vivek
Actually I have seen your image generation on the fly and i have used it on my project. But i facing a problem is i do want to use a Header("Content-Type: Image/jpg") . So if you have link please send me on sshti123@hotmail.com.
Vivek
Actually I have seen your image generation f\on the fly and i have used it on my project. But i facing a problem is i do want to use a Header("Content-Type: Image/jpg") . So if you have link please send me on sshti123@hotmail.com.
Vivek
i want to display an image on a form when an item is selected from a ComboBox. the image will be stored on the a:\drive (floppy). there will be multiple items in the combobox, each 1 relating to a specific picture. i just need the basic code to get the img to appear after selecting the item from the combobox. if n e 1 could email me the code or tell me where to get it, that would be great! oz_utester@hotmail.com
thanx 4 ur time!
This thread is for discussions of Image Generation on the FLY using PHP.