IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Upload un dossier complet d'images


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut Upload un dossier complet d'images
    Bonjour,

    Je vais essayer de détailler au mieux mon problème, ça fait 2-3 ans que j'ai pas touché à PHP j'ai peut-être des fonctions old school ^^

    Objectif principal : redimensionner les images de tout un dossier (programme local avec Wamp ou Easyphp)

    Blocage : Je cherche une fonction permettant d'upload une image à partir de son chemin

    Mon programme : il liste en "string" tous les chemins d'images :
    C:\blabla\image1.jpg
    C:\blabla\image2.jpg
    C:\blabla\image3.jpg

    J'aurais aimé réutiliser mon programme qui redimensionne 1 image à partir d'une image récupérée en $_FILES['nom'] par un formulaire mais je n'ai plus ce fameux $_FILES['nom'] puisque je ne récupère plus un fichier mais un dossier complet et je ne veux pas que l'utilisateur les ajoute une par une. Je vous mets mon programme ci-dessous, il manque en fait une fonction du genre move_uploaded_file($_FILES['photo']['tmp_name'], $path_image) mais inutilisable sans variable FILES

    Help svp, j'ai besoin de vous. Merci.

    PS : perso je vois une solution assez dégueux qui consisterait à créer un formulaire caché avec plein de $_FILES qui se submiterait tout seul, enfin bon :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    	if (isset($_POST['folder'])) // contient "C:\blabla" dans mon exemple
    	{
    		$images = @scandir(htmlspecialchars($_POST['folder']));
    		if ($images === false)
    			$error = 'Mauvais chemin de dossier.';
    		else
    		{
    			$noimage = true;
    			foreach($images as $path_image)
    			{
    				if ($path_image != '.' && $path_image != '..')
    				{
    					$noimage = false;
    					// manque un move_uploaded_file()
    					$size = @getimagesize($path_image);
    					if ($size !== false)
    					{
    						$width = 720;
    						$height = $width * $size[1] / $size[0];
     
    						if ($size['mime'] == 'image/jpeg')
    						{
    							$img_big = @imagecreatefromjpeg($path_image);
    							$img_mini = @imagecreatetruecolor($width, $height) or $img_mini = @imagecreate($width, $height);
    							@imagecopyresized($img_mini, $img_big, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
    							@imagejpeg($img_mini, $path_image);
    						}
    						elseif ($size['mime'] == 'image/png')
    						{
    							$img_big = @imagecreatefrompng($path_image);
    							$img_mini = @imagecreatetruecolor($width, $height) or $img_mini = @imagecreate($width, $height);
    							@imagecopyresized($img_mini, $img_big, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
    							@imagepng($img_mini, $path_image);
    						}
    					}
    				}
    			}
    			if ($noimage)
    				$error = 'Pas d\'image trouv&eacute;e dans le dossier. (Les formats d&eacute;tect&eacute;s sont JPG/JPEG et PNG)';
    			else
    				$error = '<span style="color: green;">Conversion r&eacute;ussie.</span>';
    		}
    	}
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    move_uploaded_file() sert à déplacer un fichier uploadé ; dans ton cas c'est donc purement a retirer.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Je comprends pas pourquoi tu parles d'upload si ton besoin est uniquement de redimensionner les images contenus dans un dossier du serveur.

    On parle d'upload pour transférer un fichier (ou plusieurs) depuis l'ordinateur du visiteur vers le serveur. Et dans ce cas il faut impérativement passer par un formulaire (ou sinon des logiciels comme filezilla mais ce n'est plus depuis le site lui-même). On peut faire de l'upload multiple et l'utilisateur peut sélectionner plusieurs images ou toutes celles d'un dossier assez facilement mais tu ne pourras pas sélectionner des images sur l'ordinateur du visiteur à partir d'un chemin.

    Si tu as besoin de conseils pour les redimensionnements il y a un tuto ici. Faut pas oublier de détruire l'image créée sinon tu vas vite arriver à dépasser la limite mémoire du serveur surtout dans une boucle.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Je comprends pas pourquoi tu parles d'upload si ton besoin est uniquement de redimensionner les images contenus dans un dossier du serveur.

    On parle d'upload pour transférer un fichier (ou plusieurs) depuis l'ordinateur du visiteur vers le serveur. Et dans ce cas il faut impérativement passer par un formulaire (ou sinon des logiciels comme filezilla mais ce n'est plus depuis le site lui-même). On peut faire de l'upload multiple et l'utilisateur peut sélectionner plusieurs images ou toutes celles d'un dossier assez facilement mais tu ne pourras pas sélectionner des images sur l'ordinateur du visiteur à partir d'un chemin.

    Si tu as besoin de conseils pour les redimensionnements il y a un tuto ici. Faut pas oublier de détruire l'image créée sinon tu vas vite arriver à dépasser la limite mémoire du serveur surtout dans une boucle.
    Je suis sur une appli local, je cherche à pouvoir remplacer (écraser) plusieurs images présentes dans un dossier par les même images d'une dimension différente. Ai-je pris la bonne méthode en commençant par lister les chemins des images avec scandir ?
    C'est pour ma propre utilité donc le serveur c'est le dossier www de Wamp et mon dossier d'images est par exemple sur le bureau. Il faut donc que "j'upload" les images de mon bureau via PHP interprété par wamp, non ? (je ne veux pas mettre ce fameux dossier dans les fichiers de wamp pour différentes raisons)

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ai-je pris la bonne méthode en commençant par lister les chemins des images avec scandir ?
    oui.
    tu as glob() aussi qui renvoie directement tous les fichiers.

    Il faut donc que "j'upload" les images de mon bureau via PHP interprété par wamp, non ?
    Non, PHP peut aller lire les fichiers qui sont sur le bureau. Inutile de les déplacer.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut
    Citation Envoyé par sabotage Voir le message
    oui.
    tu as glob() aussi qui renvoie directement tous les fichiers.


    Non, PHP peut aller lire les fichiers qui sont sur le bureau. Inutile de les déplacer.
    D'accord merci je m'en suis justement rendu compte en utilisant le tuto donné plus haut. Mon programme fonctionne, merci.

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    En même temps, si c'est pour ta propre utilité et uniquement pour redimensionner les images d'un dossier sur ton ordinateur alors je vois pas pourquoi tu passe par php. Tu ferais mieux de te servir d'un logiciel photo et faire du traitement par lot. Il existe par exemple photofiltre parmi les logiciels gratuits les plus simples qui fait cela bien mieux que php.

    L'avantage c'est que tu auras une meilleure qualité de redimensionnement notamment si le rapport de réduction est important. Php fait du travail acceptable mais moins bon. C'est dû au fait que la lib GD est conçue pour ne pas prendre trop de ressources côté serveur. Les logiciels photos utilisent une fonction automatique de renforcement des contours qui améliore sensiblement la qualité des réductions. La différence avec php est particulièrement visible si tu part d'une photo plein format en plusieurs millions de pixel vers une vignette de 150x100. Si tu veux la meilleure qualité utilise un logiciel photo

Discussions similaires

  1. Upload d'un dossier complet
    Par flomomo dans le forum CodeIgniter
    Réponses: 0
    Dernier message: 19/11/2014, 09h49
  2. uploader un dossier complet
    Par UDSP50 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 14/11/2008, 16h35
  3. upload de dossiers complet
    Par UDSP50 dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 12/11/2008, 13h58
  4. [c#] Uploader un dossier complet
    Par JBernn dans le forum ASP.NET
    Réponses: 4
    Dernier message: 22/09/2005, 04h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo