How to dynamically create an image with a specified number on it?

I have an image of the owner of the place saying something like:

Your rating is: [rating here] 

My PHP code should dynamically insert a rating number in which there is empty space on the placeholder sample. How can i do this?

+4
source share
5 answers

Here is an example of how you could do this - use the gd function to make your image, but play and cache the images well. This example plays even better if the browser already has the required image, it returns 304 ...

 #here where we'll store the cached images $cachedir=$_SERVER['DOCUMENT_ROOT'].'/imgcache/' #get the score and sanitize it $score=$_GET['score']; if (preg_match('/^[0-9]\.[0-9]{1,2}$/', $score) { #figure out filename of cached file $file=$cachedir.'score'.$score.'gif'; #regenerate cached image if (!file_exists($file)) { #generate image - this is lifted straight from the php #manual, you'll need to work out how to make your #image, but this will get you started #load a background image $im = imagecreatefrompng("images/button1.png"); #allocate color for the text $orange = imagecolorallocate($im, 220, 210, 60); #attempt to centralise the text $px = (imagesx($im) - 7.5 * strlen($score)) / 2; imagestring($im, 3, $px, 9, $score, $orange); #save to cache imagegif($im, $file); imagedestroy($im); } #return image to browser, but return a 304 if they already have it $mtime=filemtime($file); $headers = apache_request_headers(); if (isset($headers['If-Modified-Since']) && (strtotime($headers['If-Modified-Since']) >= $mtime)) { // Client cache IS current, so we just respond '304 Not Modified'. header('Last-Modified: '.gmdate('D, d MYH:i:s', $mtime).' GMT', true, 304); exit; } header('Content-Type:image/gif'); header('Content-Length: '.filesize($file)); header('Last-Modified: '.gmdate('D, d MYH:i:s', $mtime).' GMT'); readfile($file); } else { header("HTTP/1.0 401 Invalid score requested"); } 

If you put this in image.php, you should use in the image tag

following:
 <img src="image.php?score=5.5" alt="5.5" /> 
+8
source

Use static images ranging from 0 to 9 and simply combine them on the page to create large numbers:

Your Rating: [image1.jpg][image2.jpg][image3.jpg]

+2
source

I know that the question is: "How to dynamically create an image with the specified number on it?" but instead, I will address the main problem. Dynamic image manipulation is highly processor dependent. Just don't do it. And, of course, do not do this in the context of a web request. Instead, try static images and then display the correct option depending on the rating. Even if your rating system reaches 100, it would be better to have 100 static images than to repeat the same image over and over again.

+1
source

Also see alpha blending example at http://ca3.php.net/manual/en/function.imagecopymerge.php#73477

Instead of using imagestring () to write with embedded or TTF fonts, you can create your own 0-9 characters as 24-bit PNG images using alpha blending, then compose them using imagecopymerge (). This is a bit more work, but will give you much more control over the appearance of the character set.

0
source

Why not set the number as text in a div, and then create it with a choice of font and background?

0
source

All Articles