Preben Larsen wrote:
> Min umiddelbare vurdering var netop, at en serverbaseret løsning ville den
> hurtigste/letteste af afvikle i browseren i modsætning til en animeret gif.
Øh, jeg forstår ikke helt hvad det er serveren skal afvikle? Du vil vise
noget der skifter sig i browseren - altså i klienten hos brugeren der
ser din side?
Serveren kan med alm. PHP ikke sørge for dette på nogen måde sker.
Du er nød til som du fik beskrevet først - at benytte en eller anden
form for javascript/applet etc. - der kan køre på klientsiden og hente
enten en funktion på serveren der returnerer et random billede eller
selv random vælger billederne.
Som jeg ser det slipper du ikke uden om det væsentlige og det er
klientside kodningen - og det er ikke dækket af denne gruppe.
At lave en php funktion der returnerer et tilfældigt foto alt efter
indholdet i en mappe - er simpelt:
-su-2.05b# less picture_random.php
<?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);
?>
Ovenstående er hurtigt lavet ud fra eksempelbasen på PHP.net - og vil
returnere et random jpg foto og udlæse det til skærmen. Altså kan du nu
fra din alm. HTML kode blot kalde <img source="picture_random.php"
alt="Random Pic" />
Hvis det er noget lignende du hentyder til?
Men at få billedet til at reloade random uden at reloade siden - kræver
stadig du laver noget javascript eller en javaapplet eller lignende
klientside løsning.
--
Med venlig hilsen
Geert Lund,
www.GLD.dk