Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > GD
GD Forum d'entraide pour l'extension GD permettant de manipuler des images en PHP. Avant de poster -> tutoriels GD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2010, 15h33   #1
Membre habitué
 
Avatar de tsunamichups
 
Inscription : octobre 2009
Messages : 161
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 161
Points : 140
Points : 140
Par défaut Retailler l'image pendant l'upload

Bonjour,

j'ai actuelement un script qui me permet d'uploader mon image et de générer a partir de cet upload une miniature independante avec les fonctions
Code :
1
2
3
4
5
6
7
8
 
imagecreatefromgif()
 
imagecreatefromjpeg()
 
imagecreatefromjpeg()
 
imagecreatefrompng()
celon le type de fichier et les fonctions

Code :
1
2
3
4
5
imagecreatetruecolor()
 
imagecopyresampled()
 
imagejpeg()
On me demande de modifier la taille de ma première image (l'image principal sur laquelle s'appuie ma miniaturisation )
Si je génère une seconde miniature qui écrasera mon image principal mon script deviens trop lourd et ne s'exécute pas entièrement.

Pour faire les choses proprement je souhaiterais retailler l'image principal au survole des son upload et ne par conséquent ne pas toucher au code de la miniaturisation.


Est ce que quelqu'un saurais ou aurais un tuto vers le quel me pencher pour adapter mon script d'upload ?

Merci d'avance
tsunamichups est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 20h40   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
Citation:
je souhaiterais retailler l'image principal au survole des son upload
Tu veux dire avant que l'image n'arrive sur le serveur ?
Si oui la solution ne se trouve pas en PHP qui ne peut traiter l'image qu'après réception sur le serveur.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 08h46   #3
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 134
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 134
Points : 2 877
Points : 2 877
Complètement ok avec ce que dit Seb.

À priori, générer deux miniatures à partir d'une image ne devraient pas prendre longtemps à exécuter.

Quel est le poids des images que tu envoient ?
Peux-tu nous montrer le code source de ton script d'upload / découpe d'image ?
Y-t-il d'autres scripts qui sont exécutés dans ta page ?
Est-ce que ce script prend longtemps à exécuter sur ta machine ?
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 09h40   #4
Membre habitué
 
Avatar de tsunamichups
 
Inscription : octobre 2009
Messages : 161
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 161
Points : 140
Points : 140
effectivement c'est légé comme explication

Ma page doit gérer 3 upload + 3 miniature

ainsi qu'une insertion d ans une base de donnée access (via pdo)

et un affichage de de donnée dans des champs de formulaire.

Pour ce qui est de la qualité des photo, c'est une qualité iphone et appareil photo, donc grande résolution et 1m5 minimum

et ma page met pas mal de temps a s'exécuter (trop)

pour ce qui est du code, j'ai ca a disposition

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
 
?php
		/*
		 * Function d'upload d'image
		 */
		function upload($nom, $image, $dossier_upload, $extensions, $taille_max)
		{
			$dossier = $dossier = $dossier_upload;
			$fichier = addslashes(htmlentities($nom));
			$extension = strrchr($image['name'], '.');
			$fichier = $fichier.''.$extension;
			$taille_maxi = $taille_max;
			$taille = filesize($image['tmp_name']);
 
			//Si l'extension n'est pas dans le tableau
			if(!in_array($extension, $extensions)) 
			{
				$ext = '';
				foreach($extensions as $value)
				{
					$ext .= $value.' ';
				}
				echo 'Vous devez uploader un fichier de type '.$ext;
			}
			else
			{
				if($taille>$taille_maxi)
				{
					echo 'Le fichier est trop gros pour être envoyer sur le serveur ...';
				}
				else
				{
					//correction des noms
					$fichier = strtr(
							$fichier,
							'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
							'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'
						);
					$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
 
					if(move_uploaded_file($image['tmp_name'], $dossier . $fichier))
					{
					}
					else
					{
						echo 'Il y a eu un problème durant l\'envois de l\'image ';
					}
				}	
			}
			return $fichier;
		}
 
		function mignature($chemin, $image, $min, $NouvelleLargeur, $NouvelleHauteur)
		{
      		$size = getimagesize($chemin.''.$image);
      		$extension = strrchr($image, '.');
 
			switch($extension)
			{
				case '.gif' :
					$ImageChoisie = imagecreatefromgif($chemin.''.$image);
				break;
				case '.jpg' :
					$ImageChoisie = imagecreatefromjpeg($chemin.''.$image);
				break;
				case '.jpeg' :
					$ImageChoisie = imagecreatefromjpeg($chemin.''.$image);
				break;
				case '.png' :
					$ImageChoisie = imagecreatefrompng($chemin.''.$image);
				break;
				case '.GIF' :
					$ImageChoisie = imagecreatefromgif($chemin.''.$image);
				break;
				case '.JPG' :
					$ImageChoisie = imagecreatefromjpeg($chemin.''.$image);
				break;
				case '.JPEG' :
					$ImageChoisie = imagecreatefromjpeg($chemin.''.$image);
				break;
				case '.PNG' :
					$ImageChoisie = imagecreatefrompng($chemin.''.$image);
				break;
			}
 
			$fichier = $chemin.''.$image.'-'.$min.''.$extension;
			$img = $image.'-'.$min.''.$extension;
      		$NouvelleImage = imagecreatetruecolor($NouvelleLargeur , $NouvelleHauteur) or die ("Erreur");
      		imagecopyresampled($NouvelleImage , $ImageChoisie  , 0,0, 0,0, $NouvelleLargeur, $NouvelleHauteur, $size[0],$size[1]);
      		imagejpeg($NouvelleImage , $fichier, 100);
 
      		return $img;
		}
?>

Merci
tsunamichups est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h26.


 
 
 
 
Partenaires

Hébergement Web