Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CRÉATION DE MINIATURE ET POPUP POUR AFFICHAGE


Information sur la source

Catégorie :Graphique Niveau : Débutant Date de création : 09/04/2004 Vu : 11 515

Note :
9,67 / 10 - par 3 personnes
9,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

Description

Salut !
Voila alors c'est une fonction qui prend comme paramètre un fichier image JPEG et une taille maximale pour le carré englobant l'image aprés redimensionnement, elle la reduit et l'enregistre dans le même repertoire avec _mini en fin de nom ( toto.jpg --> toto_mini.jpg), biensur si le fichier existe on ne le refait pas. Enfin elle l'affiche avec un liens vers une page image.php qui ce charge d'afficher l'image taille réelle (via paramètres).
 

Source

  • function fonc_redim($img,$taille)
  • {
  • $image_dim = getimagesize($img);
  • //respect du ratio hauteur/largeur pour le calcul des nouvelles dimensions
  • if($image_dim[0] > $image_dim[1]) // x est plus grand que y
  • {
  • $new_x = $taille;
  • $new_y = $image_dim[1]/($image_dim[0]/$taille);
  • }
  • else
  • {
  • if($image_dim[0] < $image_dim[1]) // y est plus grand que x
  • {
  • $new_y = $taille;
  • $new_x = $image_dim[0]/($image_dim[1]/$taille);
  • }
  • else // x == y
  • {
  • $new_x = $taille;
  • $new_y = $taille;
  • }
  • }
  • Header("Content-type : img/jpeg");
  • $old_img = imagecreatefromjpeg($img);
  • $chaine = substr($img,0,-4);//enléve les 4 derniers caractères ( ".JPG" )
  • $chaine.="_mini.jpg";
  • //verification
  • if (!$old_img)
  • {
  • $im = imagecreate(150, 30); // Création d'une image blanche
  • $bgc = imagecolorallocate($old_img, 255, 255, 255);
  • $tc = imagecolorallocate($old_img, 0, 0, 0);
  • imagefilledrectangle($old_img, 0, 0, 150, 30, $bgc);
  • // Affichage d'un message d'erreur
  • imagestring($old_img, 1, 5, 5, "Erreur de chargement de l'image $img", $tc);
  • return $old_img;
  • }
  • if(!file_exists($chaine))
  • {
  • $new_img = imageCreatetruecolor($new_x, $new_y);
  • imagecopyresampled ($new_img, $old_img,0,0,0,0,$new_x,$new_y,$image_dim[0],$image_dim[1]);
  • imagejpeg($new_img,$chaine);
  • imagedestroy($new_img);
  • }
  • imagedestroy($old_img);
  • print "<FORM>";
  • //popup qui va afficher l'image
  • print "<INPUT TYPE =\"image\" src=\"".$chaine."\" onClick=\"open('image.php?im=".$img."', 'new', 'toolbar=no,location=no, directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes')\">";
  • print "</FORM>";
  • }
  • ////////////////// image.php ////////////////////////////////////////////////////////
  • <html>
  • <head><title></title></head>
  • <body>
  • <?php
  • $img = $_REQUEST["im"];
  • ?>
  • <form>
  • <input type="image" src="<? print $img?>" onclick="self.close()">
  • </form>
  • </body>
  • </html>
function fonc_redim($img,$taille)
{
   $image_dim = getimagesize($img);
	
   //respect du ratio hauteur/largeur pour le calcul des nouvelles dimensions
   if($image_dim[0] > $image_dim[1]) // x est plus grand que y
   {
      $new_x = $taille;
      $new_y = $image_dim[1]/($image_dim[0]/$taille);
   }
   else
   {
      if($image_dim[0] < $image_dim[1]) // y est plus grand que x
      {   
         $new_y = $taille;
         $new_x = $image_dim[0]/($image_dim[1]/$taille);
      }
      else // x == y
      {
         $new_x = $taille;
         $new_y = $taille;
      }
   }
	
   Header("Content-type : img/jpeg"); 	
   $old_img = imagecreatefromjpeg($img);
	
   $chaine = substr($img,0,-4);//enléve les 4 derniers caractères ( ".JPG" )
   $chaine.="_mini.jpg";
		
   //verification
   if (!$old_img) 
   {
      $im = imagecreate(150, 30); // Création d'une image blanche 
      $bgc = imagecolorallocate($old_img, 255, 255, 255);
      $tc  = imagecolorallocate($old_img, 0, 0, 0);
      imagefilledrectangle($old_img, 0, 0, 150, 30, $bgc);
      // Affichage d'un message d'erreur
      imagestring($old_img, 1, 5, 5, "Erreur de chargement de l'image $img", $tc);
      return $old_img;
   }
		
   if(!file_exists($chaine))
   {
      $new_img = imageCreatetruecolor($new_x, $new_y);
      imagecopyresampled ($new_img, $old_img,0,0,0,0,$new_x,$new_y,$image_dim[0],$image_dim[1]);
      imagejpeg($new_img,$chaine);
      imagedestroy($new_img);
   }
	
	
   imagedestroy($old_img);
	
   print "<FORM>";
      //popup qui va afficher l'image
   print "<INPUT TYPE =\"image\" src=\"".$chaine."\" onClick=\"open('image.php?im=".$img."', 'new', 'toolbar=no,location=no, directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes')\">";

   print "</FORM>";
}


////////////////// image.php ////////////////////////////////////////////////////////

<html>
<head><title></title></head>
<body>
<?php

   $img = $_REQUEST["im"];

?>

<form>
<input type="image" src="<? print $img?>" onclick="self.close()">
</form>

</body>
</html>

Conclusion

voili voilou, toute remarque est la bienvenue. J'ai pas trouvé de bugs , le seul truc lourd c'est que le premier qui affiche la page va etre celui qui va créer les miniature (bonjour le chargement)
merci de vos commentaires, @++
 

Commentaires et avis

signaler à un administrateur
Commentaire de tokor le 13/05/2004 13:37:43

lut lerion,

je suis vraiment un noob en php. Peux-tu stp mettre la syntaxe complete. Merci d'avance.

function fonc_redim($img,$taille)
{
....
print "&lt;/FORM&gt;";
}
// on met ou ce bout de code, dans une include ??

Désolé si c'est simple pour vous mais j'ai testé, et cela me mettait des erreurs en l'includant :/

signaler à un administrateur
Commentaire de lerion le 13/05/2004 17:30:17

salut,
en fait il faut mettre la fonction dans un fichier que tu incluras sur la page ou tu veux faire les miniatures. dans le style un fichier "fonctions.php" et apres tu fait un include de ce fichier dans ta page web. ensuite tu crées un fichier "image.php" où tu met le bout de code qui est a la fin ( fichier dans le meme rep que ta page web). Enfin dans la pge ou tu a fait l'include tu appel la fonction avec l'image et la taille et voila, normalement, tu devrai voir la miniature clickable. ^^

signaler à un administrateur
Commentaire de skrime le 02/06/2004 13:13:18

salut,
ce script a l'air vraiment super, c'est exactement ce que je cherchais...
dans mon dossier contenant les images, g crée une page dans lequel g mis ton code et une autre image.php, cependant rien ne se produit...
comment utiliser ce code ?
et s'il y a plusieurs images dans un dossier le script va t il tout redimensionner ?

signaler à un administrateur
Commentaire de lerion le 03/06/2004 20:38:51

Ce code n'est qu'une fonction, il doit etre appelé comme suis :

fonc_redim("handle de l'image", "taille max");

sans oublier de faire un include si la fonction est dans un fichier séparé.

Là ou tu appelera la fonction il y aurra la miniature de l'image.

signaler à un administrateur
Commentaire de quiaimeflash le 15/03/2005 18:11:57

Félicitation, il est vraiment bien ton code.

J'aimerais savoir quelle variable il faut modifier, pour modifier le dossier  dans lesquel sont générer les miniature.

merci.

signaler à un administrateur
Commentaire de quiaimeflash le 15/03/2005 18:42:24

Nan, ben en faite c'est bon :)

J'ai trouver en faite si vous voulez faire des miniatures vous devez rajouter : $img="$dossier/$img"; apres getimagesize() si vous appelez la fonction comme cela : fonc_redim("mon image.jpg","xx"); depuis un dossier parent.

signaler à un administrateur
Commentaire de lerion le 15/03/2005 23:18:57

salut =)
merci pour tes felicitations quiaimeflash .
Même pas le temps de repondre que tu as trouvé la reponse :D bien vu.
Cette solution est la plus simple, je l'avais d'ailleur mise en oeuvre mais je n'avais pas modifier ma source.

bon code et @+

signaler à un administrateur
Commentaire de Keliah le 06/04/2005 18:14:09

Pour afficher les photos à la taille exact de la photo (afin de l'avoir directement bien pour chaques photos), changez le lignes suivante :

print "<INPUT TYPE =\"image\" src=\"".$chaine."\" onClick=\"open('image.php?im=".$img."', 'new', 'toolbar=no,location=no, directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes')\">";


par celle ci :

     print "<INPUT TYPE =\"image\" src=\"".$chaine."\" onClick=\"open('image.php?im=".$img."', 'new', 'toolbar=no,location=no, directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes, Width=$img_x, Height=$img_y')\">";


Enjoy ;)

signaler à un administrateur
Commentaire de Keliah le 06/04/2005 18:14:54

Oups, et rajouter avant le print la déclaration des variables :)

$img_x=$image_dim[0]+40;
$img_y=$image_dim[1]+40;

signaler à un administrateur
Commentaire de hisoka2501 le 05/07/2005 17:28:21

Fatal error:  Call to undefined function:  imagecreatefromjpeg() in c:\documents and settings\administrateur.adamaru.001\mes documents\!wbs\wall\index.php on line 74


je sent ke jvé craquer :'(
et le prie c que tout les script de redimenssionement me fonts ca
ca existe pas un truc dans ce genre mais qui ne fait pas appel a la librairie GD ?

sinon bravo poru ta source car elle est claire et bien codée (mem si je debute en php, ca ressemble bcp au script mrc dc  comprend kand meme :) )

bonne continuation

signaler à un administrateur
Commentaire de jinzo59 le 18/05/2007 14:19:25

moi j'ai un bug si vous pouviez m'aider se serai sympa.
voila kan je clique sur l'image miniature ça m'ouvre bien le popup aucun probleme de ce coté mais par contre sur lancienne fenetre ça ajoute ça "?x=56&y=23" et par consequent ça fait planter mon site.
ps : bravo quand meme c'est un super script

signaler à un administrateur
Commentaire de lerion le 19/05/2007 12:37:25

Il n'y a pas de variables passées explicitement s'appellant x et y.

Ce bug doit surement venir de ton code, tu doit passer a un moment les x et y en paramètres de la page php.

signaler à un administrateur
Commentaire de jinzo59 le 19/05/2007 17:07:41

http://jinzo59.free.fr/pb.avi voila une video du bug

signaler à un administrateur
Commentaire de jinzo59 le 19/05/2007 18:13:33

maid le hic c'est que dans aucune des 15pages php de mon site il n'y a de variable x et y elle sorte de nul par et leur valeur change a chaque clique :s

signaler à un administrateur
Commentaire de jinzo59 le 19/05/2007 20:45:49

j'ai découvert que le x et le y été les coordonnées du curseur sur l'image miniature... comment est-ce possible ?

signaler à un administrateur
Commentaire de quiaimeflash le 20/05/2007 13:42:03

Bonjour,

C'est effectivement tout à fait normal, c'est le composant input-image qui a ce fonctionnement, ce n'est pas un bug, ni ton code qui fait ca.

Le composant input avec l'attribut image renvois systématiquement les coordonnées du curseur.

A ma connaissance, il n'y a pas de possibilité de l'enlever.
(sinon je suis preneur)

signaler à un administrateur
Commentaire de lerion le 20/05/2007 22:50:26

Wouu Bien vu Quiaimeleflash :o

Je note :D

signaler à un administrateur
Commentaire de meryyy le 11/12/2008 11:50:05

bonjour ,
je viens de tester ce code , il me semble trés utile ,mais j'ai un problème : il reussi à calculer le x et y de l'image mais  il n'arrive pas à déterminer le $taille . il le condidère comme chaine de caractère .
comment calculer la taille ? (l'éxpression de $taille )
pouvez vous m'aider .
merci.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.