begin process at 2012 02 11 01:29:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > CRÉATION DE MINIATURE ET POPUP POUR AFFICHAGE

CRÉATION DE MINIATURE ET POPUP POUR AFFICHAGE


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Débutant Date de création :09/04/2004 Vu :12 937

Auteur : lerion

Ecrire un message privé
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, @++


 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
Source avec Zip NAVIGATOR (+CSSDETECTOR) par xXVoxPopuliXx
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow

Commentaires et avis

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 :/

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

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 ?

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.

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.

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.

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 @+

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 ;)

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;

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

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

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.

Commentaire de jinzo59 le 19/05/2007 17:07:41

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

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

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 ?

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)

Commentaire de lerion le 20/05/2007 22:50:26

Wouu Bien vu Quiaimeleflash :o

Je note :D

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

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales