Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CRÉER UNE MINIATURE LIMITÉE EN SURFACE (ET PAS EN DIMENSIONS)


Information sur la source

Catégorie :Graphique Classé sous : miniature, surface, miniatures, thumbnail, image Niveau : Débutant Date de création : 18/08/2007 Date de mise à jour : 19/08/2007 21:12:58 Vu : 3 965

Note :
Aucune note

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note


Description

Bonjour à tous,


Voilà, pour les besoins de mon site je cherchais un code permettant de créer des miniatures qui ne sont pas limitées en largeur ou hauteur maximale, mais en surface maximale (afin que les logos de tout le monde soient affichés équitablements).

Donc voilà le code, c'est pas grand chose, et c'est un modification d'un code déjà existant. Donc rien de bien glorieux, je le poste uniquement si d'autres personnes cherchent la même chose que moi

Supporte les format Gif, Jpeg et PNG
 

Source

  • <?php
  • // Crée des images miniatures
  • // Nécessite la librairie "php_gd2"
  • /*utilisation de la fonction :
  • $path = chemin d'accès au dossier contenant la photo
  • $fichierSource = nom de la photo
  • $surface = surface maximale autorisée pour l'image
  • $destination = dossier de destination de la photo, par rapport à l'emplacement de la fonction */
  • function CreateThumb($path, $fichierSource, $surface, $destination)
  • {
  • //teste le format de l'image et crée l'image concerné
  • $image_size=getimagesize($path.$fichierSource );
  • switch ( $image_size[2] ) {
  • case 1 :
  • $source = ImageCreateFromGif($path.$fichierSource);
  • $mime_photo='image/gif';
  • break;
  • case 2 :
  • $source = ImageCreateFromJPEG($path.$fichierSource);
  • $mime_photo='image/jpeg';
  • break;
  • case 3 :
  • $source = ImageCreateFromPNG($path.$fichierSource);
  • $mime_photo='image/png';
  • break;
  • default:
  • return 0;
  • }
  • $largeurSource = imagesx($source);
  • $hauteurSource = imagesy($source);
  • //calcul le rapport entre largeur et longueur...
  • $rapport_dim= $largeurSource / $hauteurSource;
  • // Si la surface de l'image actuelle est trop grande par rapport à la limite
  • if ( ($largeurSource * $hauteurSource) > $surface ) {
  • $largeurDestination = floor( sqrt( $rapport_dim * $surface ) );
  • $hauteurDestination = $largeurDestination / $rapport_dim;
  • } else {
  • $largeurDestination = $largeurSource;
  • $hauteurDestination = $hauteurSource;
  • }
  • //crée l'image (taille de l'imange source + taille de l'ombre)
  • $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination);
  • //rempli le fond de blanc
  • $blanc=ImageColorAllocate ($im, 255, 255, 255);
  • ImageFill($im, 0, 0, $blanc);
  • ImageColorTransparent ($im, $blanc);
  • //ajoute par dessus l'image source miniaturisée
  • ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);
  • //crée la miniature
  • switch ( $mime_photo) {
  • case 'image/jpeg' :
  • ImageJpeg ($im, $destination.'/'.$fichierSource);
  • break;
  • case 'image/gif' :
  • ImageGif ($im, $destination.'/'.$fichierSource);
  • break;
  • case 'image/png' :
  • ImagePng ($im, $destination.'/'.$fichierSource);
  • break;
  • }
  • return 1;
  • }
  • ?>
<?php

// Crée des images miniatures
// Nécessite la librairie "php_gd2"
/*utilisation de la fonction :
$path = chemin d'accès au dossier contenant la photo
$fichierSource = nom de la photo
$surface = surface maximale autorisée pour l'image
$destination = dossier de destination de la photo, par rapport à l'emplacement de la fonction */
function CreateThumb($path, $fichierSource, $surface, $destination)
{
	//teste le format de l'image et crée l'image concerné
	$image_size=getimagesize($path.$fichierSource );
	switch ( $image_size[2] ) {
		case 1 :
			$source = ImageCreateFromGif($path.$fichierSource);
			$mime_photo='image/gif';
		break;
		case 2 :
			$source = ImageCreateFromJPEG($path.$fichierSource);
			$mime_photo='image/jpeg';
		break;
		case 3 :
			$source = ImageCreateFromPNG($path.$fichierSource);
			$mime_photo='image/png';
		break;
		default:
			return 0;
	}
	
	$largeurSource = imagesx($source);
	$hauteurSource = imagesy($source);
	
	//calcul le rapport entre largeur et longueur...
	$rapport_dim= $largeurSource / $hauteurSource;
	
	// Si la surface de l'image actuelle est trop grande par rapport à la limite
	if ( ($largeurSource * $hauteurSource) > $surface ) {
		$largeurDestination = floor( sqrt( $rapport_dim * $surface ) );
		$hauteurDestination = $largeurDestination / $rapport_dim;
	} else {
		$largeurDestination = $largeurSource;
		$hauteurDestination = $hauteurSource;
	}

	//crée l'image (taille de l'imange source + taille de l'ombre)
	$im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination);

	//rempli le fond de blanc
	$blanc=ImageColorAllocate ($im, 255, 255, 255);
	ImageFill($im, 0, 0, $blanc);
	ImageColorTransparent ($im, $blanc);

	//ajoute par dessus l'image source miniaturisée
	ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);

	//crée la miniature
	switch ( $mime_photo) {
		case 'image/jpeg' :
			ImageJpeg ($im, $destination.'/'.$fichierSource);
		break;
		case 'image/gif' :
			ImageGif ($im, $destination.'/'.$fichierSource);
		break;
		case 'image/png' :
			ImagePng ($im, $destination.'/'.$fichierSource);
		break;
	}
	return 1;
}

?>

Conclusion

En espérant que ça vous serve

MadMatt
 

Historique

19 août 2007 21:12:58 :
Ajout des balises PHP

Commentaires et avis

signaler à un administrateur
Commentaire de TheSin le 19/08/2007 12:56:21

Tu ne teste jamais l'existence d'un fichier ou faut s'en assurer avant ?

signaler à un administrateur
Commentaire de MadM@tt le 19/08/2007 14:48:42

Ah oui dans mon script c'est testé avant (hors de cette fonction quoi). La c'est vraiment le bout de code qui permet de créer la miniature.

signaler à un administrateur
Commentaire de TheSin le 19/08/2007 19:17:05

ok
t'as moyen de modifier l'allure du code en rajoutant les tags <?php ?> stp ?
c'est plus lisible avec les couleurs '^^
(j'ai l'impression d'être sous notepad là :( )

signaler à un administrateur
Commentaire de MadM@tt le 19/08/2007 21:13:35

Ah effectivement pas bête, j'ai rajouté c'est mieux ^^

signaler à un administrateur
Commentaire de TheSin le 19/08/2007 21:41:16

merci, maintenant ça donne envie de lire ton source ;-)

signaler à un administrateur
Commentaire de coucou747 le 20/08/2007 06:07:29

salut,
a la place de tes return 0 et 1, tu peux mettre false et true, ca sera plus propre...

$rapport_dim= $largeurSource / $hauteurSource;

sinon, il faudrait verifier les retours de ImageCreateFromXXX et imagesy au minimum...

ce qui serait interessant, c'est de gerer des contraintes, genre maxX, maxY, minX, minY, Rapport, default, exces, garder_surface... pour proposer plusieurs modes de redimentionnement, et faire en sorte que si un gars poste une image de 1 px de haut, il ne deforme pas ton site

signaler à un administrateur
Commentaire de cacoun le 08/07/2008 11:32:45

Les images originales, ont-elles une taille max ? car kan j'utilise des images de plus de 1.5Mo, j'ai l'impression qu'il refuse mes fichiers....

signaler à un administrateur
Commentaire de coucou747 le 08/07/2008 13:01:41

cacoun, ca depasse la limite de ram...

signaler à un administrateur
Commentaire de cacoun le 08/07/2008 14:34:06

Merci COUCOU747... mais ca veut dire koi???

signaler à un administrateur
Commentaire de coucou747 le 08/07/2008 14:44:18

dans php.ini, t'as une limite de memoire ram.

si php tente d'allouer plus de ram, il se stope. c'est probablement le probleme que tu as rencontre.

signaler à un administrateur
Commentaire de cacoun le 08/07/2008 14:56:29

Je te remercie

mon : upload_max_filesize 2M 2M , ceci doit être insuffisant, pourtant mes images pèsent 1.8Mo

signaler à un administrateur
Commentaire de coucou747 le 08/07/2008 15:21:21

j'ai parle de limite de memoire, pas d'upload.... relis ton php.ini

signaler à un administrateur
Commentaire de cacoun le 08/07/2008 15:26:21

Okay, je te remercie... Désolé je ne suis qu'un modeste débutant.

J'ai passé cette valeur à 40 M, je devrais être tranquille, non???

signaler à un administrateur
Commentaire de coucou747 le 08/07/2008 15:35:18

pour une image en 1024 * 1024, t'as 1 mo pixel.
chaque pixel prend au moins trois octets en ram.

je te laisse calculer les dimentions maximales de tes images.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

générer des miniatures avec gd 1.6 [ par vegetaline ] muhaha alors là c'est rigolo, un super défi pour les programmeurs fous!ok j'ai le code pour générer des miniatures grâce au php, mais ça marche qu'ave Qualité miniature [ par TiotBour ] Bonjour a tous !J'ai un probleme de qualité avec mes miniatures qui sont faites automatiquement par la librairie GD2.Elle sont automatiquement redimen Thumbnails de mauvaise qualité [ par RockmanX ] Salut!Je me suis inspir&#233; d'une source de ce site pour cr&#233;er cette fonction:$imgsrc est l'adresse de l'image de mon serveur, $impwidth est la Où est l'érreur ? (Image Miniature) [ par ImmortalPC ] Salut, apr&#232;s avoir cherch&#233; une solution pour faire une image miniature en automatique j'ai finalement trouv&#233; un script super Voici le s 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 miniatures avec bdd [ par redjay ] Bonjour,Voilà, j'aimerais créer un script affichant des images dans un tableau (jusque là pas de problème, c'est après que ça se corse...) et que je p Création de miniature lors de l'upload d'une image [ par jizz666 ] Hello, Je suis actuellement entrain de cr&#233;er un album photo en PHP/MySQL. Mais j'ai un petit probl&#232;me, je n'arrive pas &#224; cr&#233;er l Petit probleme avec une fonction, PHP [ par rouliendelavegas ] Bonjour,J'explique une peu cke fait le scriptj'ouvre un dossier "galerie/"dans ce dossier, j'ouvre un repertoire à la foidans le repertoire ouvert je Diaporama avec miniatures [ par bakalai ] Bonjour et bonne annéeJe suis débutant en php; et je cherche a créer un diaporama avec des miniature a droite et au centre l'image en grand avec en de Miniature image [ par Clad49 ] Salut ! Je me gal&#233;re a trouver un fonction qui permet de cr&#233;&#233; une miniature de fichier !une simple ou l'on indique kel fichier on veut


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.