begin process at 2010 03 22 04:25:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

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

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


 Information sur la source

Note :
Aucune note
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 :4 540

Auteur : MadM@tt

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
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

 Sources du même auteur

Source avec Zip Source avec une capture WEBSH : WEB SHELL POUR ADMINISTRER UN SERVEUR LINUX SANS CLI...
EXECUTER UN SCRIPT LONGUE DURÉE SANS LIMITATION DU SERVEUR
SAVOIR SI LE VISITEUR EST UN ROBOT D'UN MOTEUR DE RECHERCHE
CRÉER TOUTE UNE CHAINE DE RÉPERTOIRE : EXEMPLE CRÉER "/ESSAI...
SÉCURISER UN TEXTE ENREGISTRÉ SUR LE SERVEUR : SUPPRIMER L'E...

 Sources de la même categorie

Source avec une capture DES HISTOGRAMES , CAMEMBERT 3D ET ÉCLATÉS CRÉÉ AU VOL EN PH... par zozo14
AJOUTER UN ARRIÈRE PLAN SUR UNE IMAGE par digitaldax
REDIMENSIONNER UNE IMAGE EN PHP par digitaldax
Source avec Zip RECHERCHE DE MOTIF DANS UNE IMAGE par ParseError
BARRES PARAMÉTRABLES EN DÉGRADÉ DE COULEUR ET AVEC TEXTE DA... par hornetbzz

 Sources en rapport avec celle ci

Source avec Zip CLASSE : GÉNÉRATEUR DE MINIATURE STRICTE OPTIMISÉ par GauldoMagique
Source avec Zip Source avec une capture CLASSE LECTUREENLIGNE - POUR LES SITES DE SCANTRAD OU ... par tiger222
Source avec Zip CRÉATION D'UNE MINIATURE AVEC UNE LARGEUR OU UNE HAUTEUR MAX... par medium69
Source avec Zip CRÉATION DE MINIATURE D'UNE IMAGE par waterw72
EXTRAIRE LA MINIATURE D'UN FICHIER .AI (ADOBE ILLUSTRATOR) par antares7364

Commentaires et avis

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 ?

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.

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à :( )

Commentaire de MadM@tt le 19/08/2007 21:13:35

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

Commentaire de TheSin le 19/08/2007 21:41:16

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

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

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

Commentaire de coucou747 le 08/07/2008 13:01:41

cacoun, ca depasse la limite de ram...

Commentaire de cacoun le 08/07/2008 14:34:06

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

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.

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

Commentaire de coucou747 le 08/07/2008 15:21:21

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

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???

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

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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,811 sec (3)

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