Redimension d'image avant l'envoie au navigateur...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 085 fois - Téléchargée 29 fois

Contenu du snippet

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


<?

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

A voir également

Ajouter un commentaire

Commentaires

Messages postés
15
Date d'inscription
vendredi 7 janvier 2005
Statut
Membre
Dernière intervention
6 janvier 2006

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...
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
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 //
// 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();

@+
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Salut,
Nikel !!!!
Super trop cool!!!!
Merci.
@+
10/10 ;-)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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 ++
Messages postés
101
Date d'inscription
samedi 13 avril 2002
Statut
Membre
Dernière intervention
29 avril 2004

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

l'image obtenu est de meilleur qualite...

a+
Afficher les 17 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.