Alexander P. wrote:
> er dette muligt, og har i mulighed for at give eksempler?
En funktion jeg ofte benytter til den slags er nedenstående hurtigt
sammenflikkede kode:
<?php
// 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 = 'images/rotate/';
// Space seperated list of extensions, you probably won't have to
change this.
$exts = 'jpg jpeg';
$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
//// Internal functions:
function load_jpeg($imgname) {
$im = @imagecreatefromjpeg($imgname); /* Attempt to open */
if (!$im) { /* See if it failed */
$im = imagecreate(135, 135); /* Create
a blank image */
$bgc = imagecolorallocate($im, 255,
255, 255);
$tc = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 135,
135, $bgc);
/* Output an errmsg */
imagestring($im, 1, 5, 5, "Error
loading $imgname", $tc);
}
return $im;
}
//// Output the picture
$image = load_jpeg( $folder.$files[$rand] );
header("Content-type: image/jpeg");
imagejpeg($image);
?>
Koden kan uden tvivl optimeres i en mængde forskellige retninger - værd
at bemærke er dog bl.a. at koden skal udbygges en lille smule hvis den
skal tage andre typer billeder end jpg filer - det burde dog ikke være
så svært.
Ovenstående virker i dette tilfælde altså ved at du i en mappe (relativt
fra din php-fil) kaldet images/rotate/ smider en stak jpg/jpeg bileder
op - og herefter vil den random vælge en af filerne.
--
Med venlig hilsen
Geert Lund,
www.GLD.dk