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 04/10/2007, 17h01   #1
Invité de passage
 
Inscription : août 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 14
Points : 3
Points : 3
Par défaut Créer simultanément des vignettes sur upload d'images

Bonjour,
Je cherche un moyen de créer la vignette d'une photo au moment où je l'upload.

Processus :
J'ai un formulaire, je sélectionne mes photos, je valide le formulaire.
Le nom de mes photos (automatique) est enregistré dans une table GALERIES, mes photos sont enregistrées sur le seveur web (move_upload_file). C'est donc à ce moment précis que je voudrais créer et uploader la vignette de la photo, mais dans un autre répertoire (pour n'avoir à générer qu'un nom de photo).

galerie/images/monimage.jpg (ou png, ou gif)
et
galerie/images/mini/monimage.jpg

J'ai trouvé des scripts qui redimmensionnent l'image, mais dupliquer, redimmensionner, uploader tout ça en même temps, j'éprouve quelques difficultés.

Si quelqu'un pouvait m'aider ce serait sympa, il me reste 3 cheveux.

Merci,
angeleweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2007, 23h08   #2
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
Ne t'inquiète pas c'est assez facile, tu as juste a uploader ton image dans son format natif puis apres demander a la librairie GD de te créer une nouvelle image a partir de celle que tu viens d'uploader. Tu vois il n'y a que 2 étapes:
- Uploader l'image
- Créer une nouvelle image plus petit, c'est tout.
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2007, 23h16   #3
Membre éclairé
 
Avatar de Huntress
 
Inscription : août 2004
Messages : 454
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 454
Points : 339
Points : 339
Bonsoir,

Alors alors... il faut y aller pas à pas

Tu as mis des checkboxes à côté de tes photos ? Si oui je suppose que ton formulaire te renvoie un tableau avec les photos sélectionnées ?

On va partir de cette hypothèse.

Il faut donc faire une boucle sur ce tableau, et ensuite faire les étapes suivantes les unes à la suite des autres :

- Mettre le nom de la photo en base
- Uploader la photo sur le serveur

A priori tu as déjà fait ces 2 étapes, reste la dernière : la vignette

- Tu as dans la librairie GD la fonction imagecopyresampled — Copie, redimensionne, rééchantillonne une image (http://fr2.php.net/manual/fr/functio...yresampled.php)

Ok ?
Désolée pour tes cheveux o_O'
__________________

Règle n°1 du forum francophone : Parler le français...
Pas de question technique par MP, le forum est fait pour çà, merci.
Huntress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 12h06   #4
Invité de passage
 
Inscription : août 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 14
Points : 3
Points : 3
OK, j'essaye avec imagecopyresampled()...

Comme c'est apparemment tout simple, je fais simple.

Je me permets de mettre mon code :

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
 
//J'ai enregistré le nom de ma photo en base et j'upload la photo sur le serveur
 
$insertPhoto = move_uploaded_file($_FILES['photo']['tmp_name'][$i], $uploaddir.$name);
 
// la j'essaye de créer la vignette
 
$dest = $_SERVER['DOCUMENT_ROOT']."images/galeries/mini/".$name;
$source = $_SERVER['DOCUMENT_ROOT']."images/galeries/".$name;
 
$size = getimagesize($source);
$src_w = $size[0];
$src_h = $size[1];
 
$dst_h = 50;
$dst_w = round($src_w/($src_h/50));
 
imagecopyresampled ($dest, $source, 0, 0, 0, 0, $dst_w, $dst_h, $src_w, $src_h);
}
 
if ($resupdateTable) {
 
header ('location:galerie_detail.php?ID='.$IDS.'');
} else {
header ('location:crash.php');
}
mysql_close();
?>
Alors :

1. j'ai un imagecopyresampled(): supplied argument is not a valid Image resource (... mon $dest et mon $source ???, dans le manuel php $dest doit être "Lien vers la ressource de l'image de destination"... je ne comprends pas ce concept de ressource de l'image de destination ??? idem pour $source...)

et 2. un Cannot modify header information

Il est vrai que j'ai peut être un peut trop simplifié la chose mais bon...

Qu'est-ce qui cloche ? moi ?

Merci
angeleweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 15h12   #5
Invité de passage
 
Inscription : août 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 14
Points : 3
Points : 3
OK, ok,

après 2 heures d'exploration dans les différents codes trouvés sur le forum, j'ai réussi !!!!

les resources dest :
imagecreatetruecolor ...

les resources sources :
imagecreatefromjpeg ...

et pas les chemins !

bref j'ai bidouillé et dû encore générer 400 Mo de logs d'erreurs !
Le travail c'est la santé, mes cheveux repoussent !

Merci pour les tuyaux
angeleweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 15h40   #6
Membre éclairé
 
Homme Yann
Développeur Web
Inscription : avril 2005
Messages : 280
Détails du profil
Informations personnelles :
Nom : Homme Yann
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 280
Points : 366
Points : 366
Envoyer un message via MSN à yannux
Sinon pour éviter de te pendre, tu peux réutiliser une classe existante
yannux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h21.


 
 
 
 
Partenaires

Hébergement Web