begin process at 2012 05 31 00:30:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Galerie photos: Miniature + rognage


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Galerie photos: Miniature + rognage

dimanche 13 juin 2010 à 17:02:30 | Galerie photos: Miniature + rognage

Kronikerz

Bonjour,

Je suis à la recherche de 2 scripts:

le premier permettant de miniaturiser une image, tout en gardant les proportions.

Le second dans le but de découper les bords de l'image miniaturisée afin d'en obtenir une vignette.

Vous l'aurez compris, dans le but de créer une galerie photos.

Si une personne à déjà travaillé sur ce topic et que cela ne la dérange pas de partager son code, afin que j'en comprenne le fonctionnement, je lui en serai reconnaissant.

Cordialement.
lundi 14 juin 2010 à 11:23:11 | Re : Galerie photos: Miniature + rognage

devil_may_cry

Réponse acceptée !
salut voici deux fonction la premiere redimensionne et l'autre rogne l'image attention dans les deux cas je redimensionne sans se soucier si la largeur et la hauteur de l'image source source sont plus petit que ceux specifier a l'apple de la fonction mais je crois que ca sera facile pour toi de l'integrer au besoin
Code PHP :
<?php 
function redimImage($source,$destination,$Wmax, $Hmax,$ext) {
	// recuperation des dimensions de l image Src
	$size = getimagesize($source);
	$W = $size[0]; // largeur
	$H = $size[1]; // hauteur
    // Calcul du ratio
	$ratiox = $W / $Wmax; // ratio en largeur
	$ratioy = $H / $Hmax; // ratio en hauteur
	$ratio = max($ratiox,$ratioy); // le plus grand
	$W = $W/$ratio;
	$H = $H/$ratio;
	//Creation de la ressource source suivant l'extension
	switch($ext) {
		case 'jpg':
		case 'jpeg':
			$Src = imagecreatefromjpeg($source);
		break;
		case 'png':
			$Src = imagecreatefrompng($source);
		break;
	}
    // Creation de la ressource destination suivant l'extension
	switch($ext) {
		case 'jpg':
		case 'jpeg':
			$Dest = imagecreatetruecolor($W,$H);
		break;
		case 'png':
			$Dest = imagecreatetruecolor($W,$H);
			// fond transparent (pour les png avec transparence)
			imagesavealpha($Dest, true);
			$trans_color = imagecolorallocatealpha($Dest, 0, 0, 0, 127);
			imagefill($Dest, 0, 0, $trans_color);
		break;
	}
	// REDIMENSIONNEMENT+COPIE
	imagecopyresampled($Dest, $Src, 0, 0, 0, 0, $W, $H, $size[0], $size[1]);
	// ENREGISTREMENT 
	switch ($ext) {
		case 'jpg':
		case 'jpeg':
			imagejpeg ($Dest,$destination);
		break;
		case 'png':
			imagepng ($Dest,$destination);
		break;
	}
	// liberation des ressources-image
	imagedestroy ($Src);
	imagedestroy ($Dest);
	// si le fichier a bien ete cree
	if( file_exists($destination)) { 
		return true; 
	} else { 
	    return false; 
	}
}
function cropImage($source,$destination,$Wmax, $Hmax,$ext) {
	// recuperation des dimensions de l image Src
	$size = getimagesize($source);
	$W = $size[0]; // largeur
	$H = $size[1]; // hauteur
	//Creation de la ressource source suivant l'extension
	switch($ext) {
		case 'jpg':
		case 'jpeg':
			$Src = imagecreatefromjpeg($source);
		break;
		case 'png':
			$Src = imagecreatefrompng($source);
		break;
	}
    // Creation de la ressource destination suivant l'extension
	switch($ext) {
		case 'jpg':
		case 'jpeg':
			$Dest = imagecreatetruecolor($W,$H);
		break;
		case 'png':
			$Dest = imagecreatetruecolor($W,$H);
			// fond transparent (pour les png avec transparence)
			imagesavealpha($Dest, true);
			$trans_color = imagecolorallocatealpha($Dest, 0, 0, 0, 127);
			imagefill($Dest, 0, 0, $trans_color);
		break;
	}
	// REDIMENSIONNEMENT+COPIE
	imagecopyresampled($Dest, $Src, 0, 0, 0, 0, $W, $H, $size[0], $size[1]);
	// ENREGISTREMENT 
	switch ($ext) {
		case 'jpg':
		case 'jpeg':
			imagejpeg ($Dest,$destination);
		break;
		case 'png':
			imagepng ($Dest,$destination);
		break;
	}
	// liberation des ressources-image
	imagedestroy ($Src);
	imagedestroy ($Dest);
	// si le fichier a bien ete cree
	if( file_exists($destination)) { 
		return true; 
	} else { 
	    return false; 
	}
}
?>


CORDIALEMENT
lundi 14 juin 2010 à 11:33:13 | Re : Galerie photos: Miniature + rognage

devil_may_cry

ah j'avais oublier les deux fonction return true en cas de succes ou false dans le cas contraire
lundi 14 juin 2010 à 13:50:29 | Re : Galerie photos: Miniature + rognage

Kronikerz

Merci infiniment Devil, avec cela, ça va aller nickel
vendredi 18 juin 2010 à 18:30:34 | Re : Galerie photos: Miniature + rognage

Kronikerz

Devil, j'ai utilisé ton script pour créer une miniature, mais aucune image ne se crée dans le dossier de destination.

Lors de l'exécution du script, le symbole représentant une image manquante apparait dans ma fenêtre de mon navigateur.

J'ai vérifié que mon serveur local (wamp5) soit configuré pour utiliser la bibliothèque GD et cela semble être le cas, ainsi que les liens pointant sur mes photos et dossier. De plus j'ai lu que l'OS était important et je travail sous WIN7, donc je ne comprends pas ce que je dois faire de plus.

J'ai encore ajouter le code suivant avant l'appelle de ta fonction:

header('Content-Type: image/jpg');

Peux-tu, stp, m'aiguiller sur la procédure d'utilisation de ton script. Merci d'avance.
samedi 19 juin 2010 à 20:47:06 | Re : Galerie photos: Miniature + rognage

devil_may_cry

Réponse acceptée !
salut pour utiliser ces deux fonction t'a pas besoin de faire un header
il suffit de faire appele a celle-ci
//REDIMEN
Code PHP :
/**
 * @params String nom_imageSource,String nom_imageDestination,int largeur_final,int hauteur,final
* @return Bool
 */
if(redimImage('avatar.jpg','avatar2.jpg','150','80','jpg')) {
   echo "image redimensionner";
} else {
  echo "image non redimentionner";
}

pour la deuxieme fonction j'avais fait une erreur en copiant le code je rectifie donc
Code PHP :
function cropImage($source,$destination,$W_f, $H_f,$ext) {
	// recuperation des dimensions de l image Src
	$size = getimagesize($source);
	$W_s = $size[0]; // largeur
	$H_s = $size[1]; // hauteur
	// crop aux dimensions indiquees
	if ($W_f != 0 && $H_f != 0) {
		$W = $W_f;
		$H = $H_f;
	} 
	
	// meme largeur que la source)
	if ($W_f == 0 && $H_f != 0) {
			$H = $H_f;
			$W = $W_s;
	}
	
	// meme hauteur que la source
	if ($W_f != 0 && $H_f == 0) {
		$W = $W_f;
		$H = $H_s;
	}
	// crop "carre" 
	if ($W_f == 0 && $H_f== 0) {
		if ($W_s >= $H_s) {
			$W = $H_s;
			$H = $H_s;
		} else {
			$W = $W_s;
			$H = $W_s;
		}
	}
	//Creation de la ressource source suivant l'extension
	switch($ext) {
		case 'jpg':
		case 'jpeg':
			$Src = imagecreatefromjpeg($source);
		break;
		case 'png':
			$Src = imagecreatefrompng($source);
		break;
	}
    // Creation de la ressource destination suivant l'extension
	switch($ext) {
		case 'jpg':
		case 'jpeg':
			$Dest = imagecreatetruecolor($W,$H);
			// fond blanc
			$blanc = imagecolorallocate ($Dest, 255, 255, 255);
			imagefill ($Dest, 0, 0, $blanc);
		break;
		case 'png':
			$Dest = imagecreatetruecolor($W,$H);
			// fond transparent (pour les png avec transparence)
			imagesavealpha($Dest, true);
			$trans_color = imagecolorallocatealpha($Dest, 0, 0, 0, 127);
			imagefill($Dest, 0, 0, $trans_color);
		break;
	}
	// CENTRAGE en largeur
		if ($W_f == 0) {
			if ($H_f == 0 && $W_s < $H_s) {
				$X_s = 0;
				$X_d = 0;
				$W_c = $W_s;
			} else {
				$X_s = 0;
				$X_d = ($W - $W_s) /2;
				$W_c = $W_s;
			}
		} else {
			if ($W_s > $W) {
				$X_s = ($W_s - $W) /2;
				$X_d = 0;
				$W_c = $W;
			} else {
				$X_s = 0;
				$X_d = ($W - $W_s) /2;
				$W_c = $W_s;
			}
		}
	// CENTRAGE en hauteur
		if ($H_f == 0) {
			if ($W_f == 0 && $H_s < $W_s) {
				$Y_s = 0;
				$Y_d = 0;
				$H_c = $H_s;
			} else {
				$Y_s = 0;
				$Y_d = ($H - $H_s) /2;
				$H_c= $H_s;
			}
		} else {
			if ($H_s > $H) {
				$Y_s = ($H_s - $H) /2;
				$Y_d = 0;
				$H_c = $H;
			} else {
				$Y_s = 0;
				$Y_d = ($H - $H_s) /2;
				$H_c = $H_s;
			}
		}
	//Copie
	imagecopyresampled($Dest, $Src, $X_d, $Y_d, $X_s, $Y_s, $W_c, $H_c, $W_c, $H_c);
	// ENREGISTREMENT 
	switch ($ext) {
		case 'jpg':
		case 'jpeg':
			imagejpeg ($Dest,$destination);
		break;
		case 'png':
			imagepng ($Dest,$destination);
		break;
	}
	// liberation des ressources-image
	imagedestroy ($Src);
	imagedestroy ($Dest);
	// si le fichier a bien ete cree
	if( file_exists($destination)) { 
		return true; 
	} else { 
	    return false; 
	}
}

pour cette fonction sont utilisation est le même que la premiere sauf que ici si tu veut conserver une proportion remplace la par zero
Code PHP :
/**
 * @params String nom_imageSource,String nom_imageDestination,int largeur_final,int hauteur,final
* @return Bool
 */
//ici on conserve la hauteur
if(cropImage('avatar.jpg','avatar2.jpg','150','0','jpg')) {
   echo "image redimensionner";
} else {
  echo "image non redimentionner";
}

samedi 19 juin 2010 à 23:20:42 | Re : Galerie photos: Miniature + rognage

Kronikerz

Merci mille fois, je teste cela et je poste une réponse pour enrichir le topique.
dimanche 20 juin 2010 à 00:04:31 | Re : Galerie photos: Miniature + rognage

Kronikerz

Alors voilà les nouvelles informations:

header('Content-Type: image/jpg'); est requis sinon je ne peux pas utiliser ta fonction de redimensionnement (j'ai pas encore testé celle pour rogner).

Ta fonction, je l'utilise également dans un if() mais le message à l'intérieur de ce dernier ne s'affiche pas.

Je ne suis pas un débutant en php, mais pourtant je n'arrive pas à utiliser ton script malgré que je le comprend.

Je ne me décourage pas pour autant, et je vais lire, ligne par ligne, les informations de php.net
dimanche 20 juin 2010 à 00:41:07 | Re : Galerie photos: Miniature + rognage

Kronikerz

Ca avance gentillement, je t'ai parlé d'un problème avec le navigateur qui affichait un symbole d'un lien cassé pointant sur une image, ce que je ne t'ai pas dit c'est que j'utilise habituellement Chrome. J'ai alors utilisé IE7 pour voir ce que lui me disait et justement il m'indiquait que le problème venait de la fonction imagecreatefromjpeg().

Je suis allé sur php.net et il montrait une façon de procéder avec un @ devant la fonction, sans mentionner à quoi ce dernier pouvait bien servir. Je l'ai testé ainsi et maintenant, le symbole du lien cassé a disparu de Chrome pour apparaître sous IE; et toujours pas de nouvelle image dans le dossier de destination.

Comme je m'y connais absolument en rien en ce qui concerne les flux de sortie permettant de copier, puis de modeler une image avec du php, je fais appelle une fois de plus à tes connaissances, si tu as une idée au problème que je rencontre.

Merci d'avance. (encore)
dimanche 20 juin 2010 à 01:06:07 | Re : Galerie photos: Miniature + rognage

devil_may_cry

header('Content-Type: image/jpg'); est requis sinon je ne peux pas utiliser ta fonction de redimensionnement


la fonction n'affiche pas l'image directement dans le navigateur donc le header est normalement unitule ici

Je suis allé sur php.net et il montrait une façon de procéder avec un @ devant la fonction, sans mentionner à quoi ce dernier pouvait bien servir.


je ne te conseille pas d'utiliser ca quand tu est en developpement car ca n'evite pas une erreur mais elle la cache donc meme si il y'a une function qui renvoie une erreur comme par exemple mysql_connect ou autre et que tu place le signe @ devant tu n'auras pas de message d'erreur
en plus j'ai oublier de te dire que ce code j'ai l'ai fait avec la version 2 de gd avec easyphp 5.3 donc avec la version 5.3 de php et je l'ai tester que sous firefox 3.5 et IE8

1 2

Cette discussion est classée dans : image, photos, galerie, miniature, rognage


Répondre à ce message

Sujets en rapport avec ce message

Copyright image [ par kimengumi ] BonjourJ'ai bien aimé le script de webdesignasp pour écrire un copyright sur les images.En fait, j'enregistre l'image telle quelle sur mon serveur et creer un liens permettant de downloader un groupe d'image [ par french4u ] OK, je suis un grand debutant et je ne sais pas si cela est possible. voila le truc:J'ai une galerie d'image (donc cree en PHP), c'est sympa de regard Liens PHP (appel d'un fichier PHP) [ par vincf1 ] Bonjour à tous tout d'abord Voila, j'explique mon petit soucis (je suis novice en PHP ).Mon but est d'afficher une image miniat affichage d'image avec bdd [ par hary89 ] bonjour,Je débute en php, j'utilise Dreamweaver. J'ai créé une base de donnée, ma page d'affichage de photo va chercher les noms de fichier dedant. Mo reduction image [ par willinfeo ] Bonjour à tous,Je travaille sur des photos aeriennes avec une resolution de 2000/2000 pixels pour un territoire de 1km/1km.Chacunes des images avant d affichage d'image [ par keryg ] Le visiteur rempli un formulaire. Les données récuperées (le nom de la personne)doivent permettre l'affichage de la ou des photos le concernant (le no Compression d'image automatique [ par w_minisplash_w ] Salut all, C'est le premier message que je dépose alors je vais essayer d'être clair... Je vous expose le problème: Je veux gérer un systè [Site Foot] Galerie photos [ par antho11 ] Bonjour,Pour mon site de Foot (AJ Auxerre), j'ai plein de photos donc je souhaiteraisréaliser une galerie photo un peu dans le style de celle-ci http: php [ par alouest3 ] php galerie voila j'ai besoin de faire une galerie ou le gar choisi son image valide et que cele ci apparaise en haut un peu comme ca http://tetsuya.k Enregistrement d'image depuis un sous dossier. [ par needle ] Salut tous le monde!!! Voila j'expose mon cas: J'upload une image et la redimensionne avant de l'enregistrer sur le serveur (free) pour cela j'utilise


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 : 2,075 sec (3)

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