begin process at 2012 05 27 18:19:25
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > REDIMENSION D'IMAGE AVANT L'ENVOIE AU NAVIGATEUR...

REDIMENSION D'IMAGE AVANT L'ENVOIE AU NAVIGATEUR...


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Débutant Date de création :05/04/2003 Date de mise à jour :06/06/2005 21:53:34 Vu :13 115

Auteur : mmaxuel

Ecrire un message privé
Site perso
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

 Description

ce petit morceau de code permet de redimensionner une image avant de l'envoyer au navigateur... tres tres utile et indispensable pour les sites i-mode.

Source

  • <?
  • ////////////////////////////////////////////////
  • // Coded by mmaxuel for //
  • // http://xportal.free.fr/imode.php //
  • // //
  • // le site imode doivent avoir des images //
  • // deja reduite, en effet, meme en utlisant //
  • // les balises <img src="..." width="120"> //
  • // l'image lorsqu'elle est lu par le //
  • // navigateur i-mode il verifie la taille //
  • // et il la refuse si elle est trop grande //
  • // d'ou l'utilité de reduire l'image avant //
  • // de l'envoyer... //
  • // voila! //
  • // pour toute question: //
  • // rmoummed hotmail . com //
  • // //
  • // //
  • // //
  • // exemple d'utilisation: //
  • // vous desirez reduire l'image Bateau.jpg //
  • // avec une largeur de 120, la syntaxe sera //
  • // resizepicture.php?img=Bateau.jpg&img_x=120 //
  • ///////////////////////////////////////////////
  • //on enverra au navigateur un fichier de type image au format jpeg:
  • header("Content-type: image/jpeg");
  • //on charge l'image $img dans $img_big:
  • $img_big = imagecreatefromjpeg($img);
  • //on demande les dimension de l'image $img:
  • $size = getimagesize($img);
  • if($img_x <= 0)
  • $img_x = $size[0];
  • $img_y = floor($size[1] * $img_x / $size[0]);
  • if($max_y <= $img_y)
  • {
  • $img_y = $max_y;
  • $img_x = floor($size[0] * $img_y / $size[1]);
  • }
  • //echo "$img_x $img_y";
  • //on fait une nouvelle image ayant pour dimension: largeur=img_x et hauteur=img_y :
  • $img_mini = imagecreatetruecolor ($img_x, $img_y);
  • //on copie l'image d'origine contenu dans img_big dans img_mini en la reduisant a $img_x pour la largeur et $img_y pour la hauteur:
  • imagecopyresampled ($img_mini,$img_big,0,0,0,0,$img_x,$img_y,$size[0],$size[1]);
  • //on envoie l'image reduire au navigateur:
  • imagejpeg($img_mini);
  • ?>
<?

////////////////////////////////////////////////
// Coded by mmaxuel for                       //
// http://xportal.free.fr/imode.php           //
//                                            //
// le site imode doivent avoir des images     //
// deja reduite, en effet, meme en utlisant   //
// les balises <img src="..." width="120">    //
// l'image lorsqu'elle est lu par le          //
// navigateur i-mode il verifie la taille     //
// et il la refuse si elle est trop grande    //
// d'ou l'utilité de reduire l'image avant    //
// de l'envoyer...                            //
// voila!                                     //
// pour toute question:                       //
//            rmoummed  hotmail . com        //
//                                            //
//                                            //
//                                            //
// exemple d'utilisation:                     //
// vous desirez reduire l'image Bateau.jpg    //
// avec une largeur de 120, la syntaxe sera   //
// resizepicture.php?img=Bateau.jpg&img_x=120 //
///////////////////////////////////////////////

//on enverra au navigateur un fichier de type image au format jpeg:
	header("Content-type: image/jpeg");

//on charge l'image $img dans $img_big:
	$img_big = imagecreatefromjpeg($img);
//on demande les dimension de l'image $img:
	$size = getimagesize($img);

if($img_x <= 0)
	$img_x = $size[0];
		
$img_y = floor($size[1] * $img_x / $size[0]);


if($max_y <= $img_y)
	{
	$img_y = $max_y;
	$img_x = floor($size[0] * $img_y / $size[1]);
	}
	
	//echo "$img_x $img_y";

//on fait une nouvelle image ayant pour dimension: largeur=img_x et hauteur=img_y :
$img_mini = imagecreatetruecolor ($img_x, $img_y); 

//on copie l'image d'origine contenu dans img_big dans img_mini en la reduisant a $img_x pour la largeur et $img_y pour la hauteur:
imagecopyresampled ($img_mini,$img_big,0,0,0,0,$img_x,$img_y,$size[0],$size[1]);

//on envoie l'image reduire au navigateur:
imagejpeg($img_mini);

?>

 Conclusion

n'hesitez pas a posé des questions...


 Historique

22 mai 2005 15:39:31 :
Niveau novice...
06 juin 2005 21:53:34 :
mise a jour...

 Sources du même auteur

MAIL POUR LES SITES FREE.FR (MISE A JOUR LE 17MARS2004 10H24...
FONCTION MAIL POUR TOUS (MEME FREE) MISE A JOUR LE 23 SEPT 2...

 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 matrey le 05/04/2003 14:39:24

il faudrait éviter de la générer à chaque fois... Les services d'hébergement actuels proposent suffisamment d'escpace disque pour se permettre de stocker les miniatures...

Commentaire de mmaxuel le 05/04/2003 14:44:49

j'ai fait ça pour etendre l'acces du site http://xportal.free.fr au portable i-mode, et vu comme il est construit, je ne peux pas me permettre d'ajouter d'autre image... en fait si je pourrait mais bon comme j'ai pas trop le temsp de tou modifier je garde cette methode.

voila, mais sinon le code peut facilment etre modifier pour sauvegarder l'image generer...

Commentaire de mehdibou le 07/04/2003 19:02:26

Intéressant et pratique pour pas à avoir à se coltiner les miniatures lors de l'upload d'images.
Pour info, utilisez imagecopyresampled() à la place de imagecopyresized() si la luminosité de la miniature n'est pas bonne.

Commentaire de seed le 09/06/2003 20:16:46

comment faire si on ne traite pas que des images jpg ??? y a t il un moyen de se debrouiller sans recuperer l exention de l image pour en fontion de celle ci adapter imagecreatefrom$extention !!!!!
de plus bcp d hebergeur ne gerte plus le gif donc le imagecreatefromGIF ca passera pas!!!!  je pense avoir la reponse mais je suis aps sur donc .. merci de me repondre ;-)

Commentaire de matrey le 09/06/2003 20:27:06

le non-support du gif est du à la maj de GD, qui a préféré ne plus gérer le gif, pke les proprios du format commencaient à péter les couilles a vouloir demander des droits ($$$) sur l'utilisation du format... Pauvre web...

Commentaire de seed le 19/07/2003 13:16:11

aa j ai enfin retrouve le code qui m interressait mehdibou tu dis d'utiliser imagecopyresampled() a la place de imagecopyresised()
en effet lorsque les image sont foncer c est bien mieu mais je voudrais savoir si tu sais si cette fonction a des desavantages  par rapport a imagecopyresized ou si on pourrait remplacer imagecopyresized par imagecopysampled  tt le temp enfin ca me parait louche pourquoi y aurait t il 2 fonction d ont 1 qui marcherait mieu que l autre??  voila

Commentaire de sepultura666 le 10/02/2004 18:26:40

faut aussi rajouter un :
imagecreatetruecolor();

la qualité est nettement mieux...

exemple :

http://www.sepu-design.com/  dans la partie productions

Commentaire de HyWaN le 22/05/2005 14:54:45

... je veux pas etre mechant :) mais ca merite level expert ? lol le script est tres bien :) mais c'est des fonctions de gd de php :p enfin j'attendais plus d'un niveau expert :)
mais je ne critique en rien le script ! il est bien commente etc ... nikel rien a redire :)

Commentaire de mmaxuel le 22/05/2005 15:37:44

salut hywan!

effectivement j'avais mit le niveau expert car je me suis dit qu'un debutant n'avait pas a utiliser ce code...

bon pour vous faire plaisir le vais le remettre en niveau novice...

cordialement.

Commentaire de ImmortalPC le 06/06/2005 15:49:10

Salut,
il a l'air super comme code mais moi il ne marche pas :
L'image refuse de s'afficher, j'ai désactivé le header et voilà l'érreur :

Warning: imagecreate() [function.imagecreate.html]: Invalid image dimensions in c:\program files\internet\serveurs\easyphp1-7\www\immortal-pc\miniatures\21.php on line 40

Warning: imagecopyresized(): supplied argument is not a valid Image resource in c:\program files\internet\serveurs\easyphp1-7\www\immortal-pc\miniatures\21.php on line 43

Warning: imagejpeg(): supplied argument is not a valid Image resource in c:\program files\internet\serveurs\easyphp1-7\www\immortal-pc\miniatures\21.php on line 46
@+

Commentaire de mmaxuel le 06/06/2005 17:17:27

quellque parametre as tu appliquer?

21.php?.......

.

Commentaire de ImmortalPC le 06/06/2005 19:55:14

Re,
c'est bon j'ai réglé le problème sauf que maintenant j'ai une image pourave. C'est quasi du noir et blanc.
Normale ?
@+

Commentaire de mmaxuel le 06/06/2005 21:54:16

le code vient d'etre mise a jour...

l'image obtenu est de meilleur qualite...

a+

Commentaire de Anthomicro le 07/06/2005 00:02:49

Salut,

remplace <? par <?php

ensuite pour avoir la largeur et hauteur de l'image il existe une méthode plus rapide que getimagesize()

imagesx()

et imagesy()

http://fr.php.net/manual/fr/function.imagesx.php
http://fr.php.net/manual/fr/function.imagesy.php

a ++

Commentaire de ImmortalPC le 07/06/2005 08:15:42

Salut,
Nikel !!!!
Super trop cool!!!!
Merci.
@+
10/10 ;-)

Commentaire de ImmortalPC le 08/06/2005 13:26:40

Salut,
Je comprend pas trop l'histoire avec $max_y
J'avait besoin de pouvoir paramétrer soit la hauteur soit la longeur sans avoir à créer 2 fichiers alors je l'ai un peu remixé et j'ai enlevé l'histoire de $max_y.
Source :
<?php
////////////////////////////////////////////////
// Coded by mmaxuel for //
// http://xportal.free.fr/imode.php //
// //
// le site imode doivent avoir des images //
// deja reduite, en effet, meme en utlisant //
// les balises <img src="..." width="120"> //
// l'image lorsqu'elle est lu par le //
// navigateur i-mode il verifie la taille //
// et il la refuse si elle est trop grande //
// d'ou l'utilité de reduire l'image avant //
// de l'envoyer... //
// voila! //
// pour toute question: //
// rmoummed hotmail . com //
// //
// //
// //
// exemple d'utilisation: //
// vous desirez reduire l'image Bateau.jpg //
// avec une largeur de 120, la syntaxe sera //
// resizepicture.php?img=Bateau.jpg&img_x=120 //
///////////////////////////////////////////////

//on enverra au navigateur un fichier de type image au format jpeg:
header('Content-type: image/jpeg');

$img = 'Zed_Art-Digital_00059.jpeg';//Image
$img_x = 150;// Largeur de la miniature
$img_y = 150;// Hauteur de la miniature
// 0: On contrôle la largeur.
// 1: On contrôle la hauteur.
$type = 0;

//on charge l'image $img dans $img_big:
$img_big = imagecreatefromjpeg($img);
//on demande les dimension de l'image $img:
$size = getimagesize($img);

if($type === 0){
    if($img_x <= 0){
        $img_x = $size[0];
    }
    $img_y = round(($size[1]*$img_x)/$size[0]);
}else{
    if($img_y <= 0){
        $img_y = $size[1];
    }
    $img_x = round(($size[0]*$img_y)/$size[1]);
}

//on fait une nouvelle image ayant pour dimension: largeur=img_x et hauteur=img_y :
$img_mini = imagecreatetruecolor ($img_x, $img_y);

//on copie l'image d'origine contenu dans img_big dans img_mini en la reduisant a $img_x pour la largeur et $img_y pour la hauteur:
imagecopyresampled ($img_mini,$img_big,0,0,0,0,$img_x,$img_y,$size[0],$size[1]);

//on envoie l'image reduire au navigateur:
imagejpeg($img_mini);

?>

Ensuite je pensais pour afficher l'image plus vite si on utilisait  
ob_start('ob_gzhandler'); ???

Utilisation :
Ligne 1 :
ob_start('ob_gzhandler');

Dernière ligne :
ob_end_flush();

@+

Commentaire de drommk le 06/01/2006 12:19:39

t'as pas de problèmes avec les images de haute definition ? (genre 300 dpi) parce que j'ai écrit un script très similaire, et les miniatures pour les images à haute résolution ne marchent pas. Ca marche en local, mais en ligne ça me fait des rectangles noirs...

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,515 sec (4)

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