Volledige versie bekijken : php: elke dag een afbeelding



zodiac
8 July 2006, 13:27
Ik wil met php elke dag een nieuwe afbeelding laden. De afbeeldingen bevinden zich allemaal in dezelfde dir en
de eerste ziet er zo uit: .../001.gif
die van vandaag is: .../188.gif
Hoe zal die code eruit zien? Het hoeft niet per se in php

Alvast bedankt!

jeroentje
8 July 2006, 14:09
mmh ik zo het doen door te controleren op de datum en is de datum niet juist eentje verhogen enzo verder gaan

zodiac
8 July 2006, 16:03
Ik begrijp het niet helemaal.. moet ik dan elke datum iets apart laten uitvoeren?

Snakey
8 July 2006, 16:33
Je kan misschien starten met dit scriptje, het is oorspronkelijk bedoeld voor sigs, maar je kan hem beetje aanpassen. Telkens als je deze pagina laadt, zal hij dan een willekeurige afbeelding tonen uit die map


<?php



// Set variables

$image_dir = './';

$image_prefix = 'sig-';

$imageArray = array();



// Set image types

if(function_exists("imagegif")){

$image_types = array( 'gif', 'jpg' );

} else {

$image_types = array( 'jpg' );

}



// Get all sig images

$dir = dir( $image_dir );

while ( false !== ( $image_name = $dir->read() ) ) {



$image_info = pathinfo( $image_name );

// If it's an iamge and it starts with the correct prefix

if( in_array( @$image_info[ 'extension' ], $image_types ) && substr( $image_name, 0, strlen( $image_prefix ) ) == $image_prefix ){

array_push( $imageArray, array( 'name' => $image_name, 'type'=> $image_info['extension'] ) );

}



}

$dir->close();



// Did it find any?

if( count($imageArray) ){



// Yes

// Choose a random one

$image = $imageArray[ rand( 0, count( $imageArray )-1 ) ];



switch( $image[ 'type' ] ){



// Create a gif image

case('gif'):{

if($load_image = @ImageCreatefromgif( $image_dir . $image[ 'name' ] )){

header("Content-Type: image/gif");

Imagegif($load_image);

} else {

createErrorImage( 'Error creating gif' );

}

break;

}



// Create a jpeg image

case('jpg'):{

if($load_image = @ImageCreatefromjpeg( $image_dir . $image[ 'name' ] )){

header("Content-Type: image/jpeg");

Imagejpeg($load_image);

} else {

createErrorImage( 'Error creating jpeg' );

}

break;

}



} // END switch( $image[ 'type' ] )



} else {



// No

// Create an error image

createErrorImage( 'No images found' );



}



// Create an error image

function createErrorImage( $error ) {



$load_image = imagecreate (300, 50);

$background= imagecolorallocate ($load_image, 255, 255, 255);

$text_colour = imagecolorallocate ($load_image, 0, 0, 0);

imagefilledrectangle ($load_image, 0, 0, 150, 30, $background);

imagestring ($load_image, 1, 5, 5, "Error: $error", $text_colour);

header("Content-Type: image/jpeg");

Imagejpeg($load_image);



} // END function createErrorImage()



?>

zodiac
9 July 2006, 14:09
nogmaals bedankt snakey. Zo'n sig, is dat iets van python of staat het ergens anders voor?

Snakey
9 July 2006, 14:17
Is een afkorting van signature (handtekening), zie mijn handtekening, nu en dan zal je er een andere afbeelding zien.

zodiac
9 July 2006, 16:41
oké, is wel leuk!

patrickbrans
9 July 2006, 19:27
Ik neem aan dat het vandaag dag 188 van het jaar is :)



<?php
$imagemap = 'image/'; //map waarin je afbeeldingen staan (moet absoluut zijn)
$imageext = '.gif'; //extensie van de afbeeldingen
$dayofyear = date('z'); //roep de dag van het jaar op

if($dayofyear<100||$dayofyear>10){$dayofyear = '0'.$dayofyear;}
elseif($dayofyear<10){$dayofyear = '00'.$dayofyear;}
else{}

if($imageext == '.gif'){
$img = imagecreatefromgif($imagemap.$dayofyear.$imageext) ;
}
elseif($imageext == '.jpg'||$imageext == '.jpeg'){
$img = imagecreatefromjpeg($imagemap.$dayofyear.$imageext );
}
elseif($imageext == '.png'){
$img = imagecreatefrompng($imagemap.$dayofyear.$imageext) ;
}
else{
exit('wrong image type');
}

if($imageext == '.gif'){
header("Content-type: image/gif");
imagegif($img);
}
elseif($imageext == '.jpg'||$imageext == '.jpeg'){
header("Content-type: image/jpeg");
imagejpeg($img);
}
elseif($imageext == '.png'){
header("Content-type: image/png");
imagepng($img);
}
else{
exit('wrong image type');
}
imagedestroy($img);

?>

wel effe checken op fouten, heb het hier rightaway geschreven

EDIT : zag niet dat het enkel voor GIF's was, heb het dus voor alle bestandstypen gedaan
EDIT2 : Fix van voorvoegnullen als ie kleiner dan 10 of 100 is