So I have this script that will rotate images located in a directory, which works great. However, it requires a refresh of the page in order to rotate the image. Is there a way I can modify this to have it rotate the image when the image itself is clicked? Thanks in advance
HTML:
<img src="rotate.php" alt="random image" />
PHP:
<?php $folder = 'images/'; $exts = 'jpg jpeg png gif'; $files = array(); $i = -1; if ('' == $folder) $folder = './'; $handle = opendir($folder); $exts = explode(' ', $exts); while (false !== ($file = readdir($handle))) { foreach($exts as $ext) { if (preg_match('/.'.$ext.'$/i', $file, $test)) { $files[] = $file; ++$i; } } } closedir($handle); mt_srand((double)microtime()*1000000); $rand = mt_rand(0, $i); header('Location: '.$folder.$files[$rand]); ?>
Advertisement
Answer
Update: this is very basic but test it out and see if it works;
<script> function changeImage(o){ o.src = 'http://www.domain.com/testtest.php?' + (new Date()).getTime(); // time to help stop caching } </script> <img src="http://www.domain.com/testtest.php" onclick="changeImage(this)" />
and in your php add a content header to send the image eg if it is a gif
or png…
<?php // see link at bottom for getting file extention switch ($selected_random_file_extention) { case "gif": header('Content-type: image/gif'); $file_ext = "gif"; break; case "jpg": header('Content-type: image/jpg') $file_ext = "jpg"; break; case 3: header('Content-type: image/png'); $file_ext = "png"; break; } //header('Content-type: image/gif'); // send as image //$random_image_name = rand(1,5); // you would add $folder.$files[$rand]; and include you script above $random_image_name = $folder.$files[$rand]; // adjust paths as needed $img_file = "http://www.domain.com/".$random_image_name.".gif"; // .$file_ext; readfile($img_file); // not sure how memory will go ?>
The idear is to set the header
content type and to read and write the file to the output buffer using readfile
, armed with this you could use ajax as another means to request the image and using the status
to easly display a loading indicator.
If you where to Rewrite the URL you could change the extension of .php for the src or not even have an extention.
http://php.net/manual/en/function.pathinfo.php
using pathinfo 'extension'
you can get the extention and then set the
approprate Content-type