Jump to content

Random image Script, and passing parameters in HTML


gratty

Recommended Posts

I'm pretty new to PHP so bear with me  ;),

I've been looking for a PHP script that I can use to randomly display images. However, I have a large amount of directories (over 100) that contain these images, and I need to be able to pass parameters to the PHP script based on the content, to ensure that I get images from the correct directory. For example, if I'm posting content about tigers and I want to post a tiger picture, then I'd point the script to images/animals/tigers. I've found a lot of scripts that can display images from a single directory, but none that provide the sort of flexability that I need. Additionally, I need the script to be able to be called from outside of an HTML document, so if I needed to call an image, I could do something like the following:

 <img src=(Random.php getRandomImage($directory)) alt = "Random Image" />

 

Is this possible at all? I found a script that could do this before, but it had a header() return, and I need to display six images, while the header only is able to return one. Would it be possible to adjust this following code to meet these requirements?

 

<?php
/*
By Matt Mullenweg > http://photomatt.net
Inspired by Dan Benjamin > http://hiveware.com/imagerotator.php
Latest version always at:
http://photomatt.net/scripts/randomimage
*/// Make this the relative path to the images, like "../img" or "random/images/".
// If the images are in the same directory, leave it blank.
$folder = '';

// Space seperated list of extensions, you probably won't have to change this.
$exts = 'jpg jpeg png gif';

$files = array(); $i = -1; // Initialize some variables
if ('' == $folder) $folder = './';

$handle = opendir($folder);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
foreach($exts as $ext) { // for each extension check the extension
if (preg_match('/\.'.$ext.'$/i', $file, $test)) { // faster than ereg, case insensitive
$files[] = $file; // it’s good
++$i;
}
}
}
closedir($handle); // We’re not using it anymore
mt_srand((double)microtime()*1000000); // seed for PHP < 4.2
$rand = mt_rand(0, $i); // $i was incremented as we went along
header('Location: '.$folder.$files[$rand]); // Voila!
?>

 

 

 

Could anyone point me in the right direction?

Link to comment
Share on other sites

well for one, if you need to display 6 images you won't be able to do:

<img src=(Random.php getRandomImage($directory)) alt = "Random Image" />

 

i would suggest making an image creation function that takes in your directories:

<?php
function createImage($dir,$subdir){
// create the image from a random image from the provided directory structure
// set your headers to tell the browser an image is coming then output the image data
}
createImage($_GET['dir'],$_GET['subdir']);
?>

then call it by doing

<img src='createImage.php?dir=animals&subdir=tigers'>

 

something like that should work.

 

if you want 6 images i would grab 6 images randomly then format it in whatever html you need then output that. you wont be able to use it as an image source though.

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.