Saturday, July 4th, 2009

Show random image(s) from a directory

by Gabriel on 21/09/08 at 4:41 am

Save to StumbleUpon Stumble Upon it!     Save to Del.icio.us Save to Del.icio.us    Share on Twitter! Share on Twitter!

Greetings! Subscribe to my RSS feed or get my latest post directly in your mailbox. Thanks for visiting!

Hi,

If you need to show images randomly from a directory then this script can help you.

index.php

Let’s configure some variables: $extensions, $images_folder_path & $url_to_images_folder.

<?php
// extensions to be checked

$extensions = array('jpg','jpeg','gif','png','bmp');

// images folder

$images_folder_path = '/home/site/public_html/images/';

// url to folder

$url_to_folder = 'http://www.yoursitename.com/images/';

Create the array with the URLs to the images:

// Images Array (SRC value)

$images = array();

srand((float) microtime() * 10000000); // IF PHP Version < 4.2.0

// Open directory and read images

if ($handle = opendir($images_folder_path)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {

			// get file extension
			$ext = strtolower(substr(strrchr($file, "."), 1));

			if(in_array($ext, $extensions))
			{
			$images[] = $url_to_folder.$file;
			}

        }
    }
    closedir($handle);
}

Are there any images in the directory? Select randomly 2 distinctive values. If there are no images in the folder, notify the user with a message.

if(!empty($images)) // Do we have something to show?
{
$rand_key = array_rand($images, 1);

$src = $images[$rand_key];

echo "<img src='".$src."' align='absmiddle'>";

/*
Show second image; Make sure it will not be the same as the first one;
We will remove the element of the first image from the array. This way the script will not reselect it
*/

unset($images[$rand_key]);

$rand_key = array_rand($images, 1);

$src = $images[$rand_key];

echo "<br /><br /><img src='".$src."' align='absmiddle'>";
}
else
{
echo 'No images were found in <strong>'.$images_folder_path.'</strong>';
}
?>


Be notified when we have new posts by subscribing to BitRepository RSS Feed.
Support us!Did you like this post?
Please spread the word!
Save to StumbleUpon  Save to Del.icio.us  Share on Twitter!    

2 Comments

Tim

Sep 21st, 2008

This could be done with a lot less code.

Gabriel

Sep 21st, 2008

A lot less code? Could be, but think how many beginners would actually understand a similar script with less code. The current application is well commented and gives the user an idea of how this script is actually working (step by step).

Leave a Comment