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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 285 fois - Téléchargée 31 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
drommk
Messages postés
15
Date d'inscription
vendredi 7 janvier 2005
Statut
Membre
Dernière intervention
6 janvier 2006

6 janv. 2006 à 12:19
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...
ImmortalPC
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
8 juin 2005 à 13:26
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();

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

6 juin 2005 à 21:54
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.