upload d'image et dimension

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : upload d'image et dimension

Re: upload d'image et dimension

par sam01 » 20 avr. 2010, 14:53

Merci pour l'exemple macgawel.

Je devrais m'en sortir avec ça ;-)

Re: upload d'image et dimension

par macgawel » 20 avr. 2010, 14:27

Ok macgawel, en gros si j'ai besoin de rien je t'appelle c'est ça ;-)
Entre autres...


Mais aussi, si tu ne maîtrises pas un minimum les bases de la programmation PHP, pose tes questions dans PHP débutant :twisted:
La méthode de ratio ne me va pas.

J'aimerais changer de méthode pour les redimensionner.
Tu aimerais utiliser quelle méthode ?


Sinon, RTFM - et aussi les discussions qui suivent (exemple)

En gros :
// On définit la taille maximum du fichier
// On sépare largeur et hauteur pour faciliter la maintenance
$max_haut = 200;
$max_larg = 200;
// Et on m'enlève ces @ plus dangereux qu'autre chose !!!
$tableau = getimagesize($_FILES['up_photo']['tmp_name']);
$largeur = $tableau[0];
$hauteur = $tableau[1];
// On calcule le ratio à appliquer. On peut enlever le 1 si on veut agrandir les petites images.
// Désolé, j'utilise la méthode du ratio ;-)
$ratio = min($max_larg/$largeur, $max_haut/$hauteur, 1);
$new_larg = round($ratio * $largeur);
$new_haut = round($ratio * $hauteur);
// Il ne reste plus qu'à générer la nouvelle image...

Re: upload d'image et dimension

par sam01 » 20 avr. 2010, 13:24

Ok macgawel, en gros si j'ai besoin de rien je t'appelle c'est ça ;-)

La méthode de ratio ne me va pas.

J'aimerais changer de méthode pour les redimensionner.

Re: upload d'image et dimension

par macgawel » 20 avr. 2010, 12:41

Ben mon script il fonctionne.
Il me créer des images plus petites dans un répertoire spécifique.

Par contre il ne me redimensionne pas les images d'origine...

Au fait si les images sont supérieures à 200px de large et 200 pixels de long, il faudrait les redimensionner...
Ben tu peux t'inspirer de ce qui est déjà fait :
1. Tu crées des images plus petites.
2. Tu supprimes les images d'origine.
=D>

Re: upload d'image et dimension

par sam01 » 20 avr. 2010, 12:26

Ben mon script il fonctionne.
Il me créer des images plus petites dans un répertoire spécifique.

Par contre il ne me redimensionne pas les images d'origine...

Au fait si les images sont supérieures à 200px de large et 200 pixels de long, il faudrait les redimensionner...

Re: upload d'image et dimension

par macgawel » 20 avr. 2010, 10:34

... Et tu as testé ton script actuel ?
Il te donne quoi ? :roll:

Re: upload d'image et dimension

par sam01 » 20 avr. 2010, 10:15

il manque du code ... il est question de $ratio ...
Bonjour,

voici la partie du code manquant

	  $ratio = 50;  
	  
	  // Création des dossiers
	
	  if (!file_exists($dest_dossier)) 
	  {
		mkdir ($dest_dossier, 0777); 
	  }
	  
	  if (!file_exists($dest_dossier_mini)) 
	  {
		mkdir ($dest_dossier_mini, 0777); 
	  }
	  
	  // on compte d'abord le nombre d'image dans le répertoire
	  
	  $num_images = count_files($dest_dossier);
	  
	if ($num_images < 10)
	{
	  
	  
	   // on teste si le champ permettant de soumettre un fichier est vide ou non
		if (empty($_FILES['up_photo']['tmp_name'])) 
		{
			// si oui, on affiche un petit message d'erreur
			$erreur[] = 'Aucun fichier envoyé.';
		}
		else
		{

			// on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier 
			//(je vous suggère de regarder la documentation de la fonction getimagesize pour de plus amples informations) 
	  
			$tableau = @getimagesize($_FILES['up_photo']['tmp_name']); 
	    
			if ($tableau == FALSE) 
			{ 
				// si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur 
				unlink($_FILES['up_photo']['tmp_name']); 
				$erreur[] = 'Votre fichier n\'est pas une image.'; 
		     }
			 else
			 {
  
				// vérifications de l'extention
  
				if( !in_array( substr(strrchr($_FILES['up_photo']['name'], '.'), 1), $extensions_ok ) )
 
				{
					$erreur[] = 'Veuillez sélectionner un fichier de type png, gif ,jpg ou jpeg !';
				}
  
					elseif( file_exists($_FILES['up_photo']['tmp_name'])
  
					and filesize($_FILES['up_photo']['tmp_name']) > $max_size)
  
				{
					$erreur[] = 'Votre fichier doit faire moins de 500Ko !';
				}
	  
				// on détremine la taille de la photo
	  
				$up_taille = $_FILES['up_photo']['size'];
				
				$dest_fichier = basename($_FILES['up_photo']['name']);// cela donne le même résultat que la commande ==> $_FILES['up_photo']['name'];
				
				// si on a déjà un fichier qui porte le même nom que le fichier que l'on tente d'uploader, on modifie le nom du fichier que l'on upload 
	  
				if (is_file($dest_dossier .$_FILES['up_photo']['name']))
				{
						// echo 'dest_fichier = '.$dest_fichier;
					$dest_fichier = '_'.$_FILES['up_photo']['name']; 
					 	// echo 'dest_fichier = '.$dest_fichier;
				}
				
				
				// formatage nom fichier
				// enlever les accents

				$dest_fichier = strtr($dest_fichier,

				'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
				'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
 
				// remplacer les caracteres autres que lettres, chiffres et point par _
 
				$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
				
			
	  
				// on vérifie si le fichier n'est pas déjà présent : 
	  
				$chemin_fic = $dest_dossier . $dest_fichier;
		  
			
				/*if (file_exists($chemin_fic)) 
				{
					$dest_fichier = 'DUP'.$dest_fichier;
					echo 'dest_fichier = '.$dest_fichier;
				}*/
				// si l'image n'est ni un jpeg, ni un png, on supprime  le fichier uploadé et on affiche le message d'erreur
				 
				if (!($tableau[2] == 2 || $tableau[2] == 3)) 
				{ 
					 unlink($_FILES['up_photo']['tmp_name']); 
					 $erreur[] = 'Votre image est d\'un format non supporté. Les formats supportés sont uniquement jpeg et png.'; 
				} 
				
			}
		}
	}

Je ne peux pas utiliser Imagick car je n'ai pas l'extention...

Re: upload d'image et dimension

par stealth35 » 19 avr. 2010, 18:54

vive ImageMagick :mrgreen:
$image = new Imagick('image.jpg');
$image->thumbnailImage(200, 200, true);
$image->writeImage('image.jpg');

Re: upload d'image et dimension

par devlop78 » 19 avr. 2010, 15:21

il manque du code ... il est question de $ratio ...

upload d'image et dimension

par sam01 » 19 avr. 2010, 14:22

Bonjour,

j'ai le script suivant qui permet de uploader des fichier et de créer des miniatures

		if (move_uploaded_file($_FILES['up_photo']['tmp_name'], $dest_dossier . $dest_fichier)) // à ce moment on met le fichier sur le serveur
			{
				
				// Creation de l'image miniature 
				
				 // si notre image est de type jpeg 
				if ($tableau[2] == 2) 
				{ 
					// on crée une image à partir de notre grande image à l'aide de la librairie GD 
					$src = imagecreatefromjpeg($dest_dossier.'/'.$dest_fichier); 
					// on teste si notre image est de type paysage ou portrait 
					if ($tableau[0] > $tableau[1]) 
					{ 
						$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); 
						imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); 
					} 
					else 
					{ 
						$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); 
						imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); 
					} 
					// on copie notre fichier généré dans le répertoire des miniatures 
					imagejpeg ($im, $dest_dossier_mini.'/'.$dest_fichier); 
				} 
				
				if ($tableau[2] == 3) 
				{ 
					$src = imagecreatefrompng($dir.'/'.$file_upload); 
					if ($tableau[0] > $tableau[1]) 
					{ 
						$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); 
						imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); 
					} 
					else 
					{ 
						$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); 
						imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); 
					} 
					imagepng ($im, $dir_mini.'/'.$file_upload); 
				} 
 
 
 

J'aimerais fixer à l'image une largeur maximale et une hauteur maximale.

Au fait j'aimerais que l'image ne fasse pas plus de 150 pixel de large et 200 pixels de hauteur...