image aléatoire

Eléphanteau du PHP | 12 Messages

09 avr. 2006, 14:31

bonjour je souhaiterai savoir comment créer une image comme celle-ci qui change aléatoirement ? merci d'avance

Image

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 avr. 2006, 14:44

Salut,

Il te faudra certainement utiliser les fonctions image et la librairie GD regarde ce tuto pour en apprendre plus.

Mais le principe serait (je pense) de donner un nom d'image aléatoire à la fonction imagecreatefrompng() puis de donner le même nom lors de la création imagepng($image, "image.png");

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Dux
Eléphant du PHP | 127 Messages

09 avr. 2006, 22:40

salut,

plusieurs possibilités mais le plus rapide et simple:

tu mets toutes tes images PNG dans un dossier images/
et tu le listes dans un tableau
$dir=opendir("images"); 
while( ($img=readdir($dir)) !== false)
  if ($img{0} != ".")  $tab_img[]=$img;
closedir($dir);
ensuite tu choisis une clef au pif dans le tableau
$rnd = rand(0 , count($tab_img) ); 
puis pour finir tu envoies ca au navigateur en PNG
$img = imagecreatefrompng( "images/".$tab_img[$rnd] );
header("Content-type: image/png"); // transforme le script en image
imagepng($img); // affiche l'image
imagedestroy($img); // libère la ram (facultatif)
C'est un exemple avec des PNG, mais tu peux mettre des GIFs ou JPEGs mais il faudra modifier la fonction imagecreatefrompng par imagecreatefromgif ou imagecreatefromjpeg ou alors détecter le type de l'image avec getimagesize
list($x,$y,$extt)=getimagesize("fichier");
  
switch ($extt) {
    case 2: $img=imagecreatefromjpeg("fichier"); break;
    case 1: $img=imagecreatefromgif("fichier"); break;
    case 3: $img=imagecreatefrompng("fichier"); break;
 }
ou avec pathinfo
$parties=pathinfo(strtolower("fichier"));
  $ext=strtolower($parties['extension']);
switch ($extt) {
    case "jpg": $img=imagecreatefromjpeg("fichier"); break;
    case "gif": $img=imagecreatefromgif("fichier"); break;
    case "png": $img=imagecreatefrompng("fichier"); break;
  }

il y a encore plein d'autres techniques, par exemple avec appel direct de la clef 'mime' du tableau retourné par getimagesize
$type=getimagesize('fichier');
$ext = $type['mime'];
ou avec les données exifs si elles existent encore sur tes images
$exif = exif_read_data('fichier', 'EXIF');
$ext = $exif[ImageType];
je suis plus sur de 'ImageType', il faut vérifer en affichant avec print_r le tableau EXIF


J'espère que maintenant tu as des pistes pour te faire un petit script image sympa ;) ;)