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.
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