J’aurais besoin d’aide pour deux questions…
J’aimerais pouvoir uploader une image via un formulaire et créer à chaque fois deux vignettes - l’une moyenne et l’autre petite - et placer la première vignette dans un répertoire nommé‘illustrations/’ et la deuxième vignette dans un répertoire nommé ‘vignettes/’. Je précise que je n’ai pas besoin de conserver l’image source – je veux juste garder les deux vignettes ainsi générées.
J’utilise le code ci-dessous.
Question 1) Pour que la vignette soit générée il faut que je sauvergarde le fichier sur le serveur avec move_uploaded_file. Je n’arrive pas à générer la vignette à partir du fichier temporaire. J’ai essayé quelque chose comme $fichierSource = $ ($_FILES['photo']['tmp_name'] mais sans succès… Est-ce que les fonctions ImageCreateFromJpeg etc… ne fonctionnent que sur des fichiers déjà enregistrés dans un répertoire ou peut-on le faire à partir du cache ?
Question 2) Pour obtenir deux vignettes, j’ai pensé écrire deux fois de suite la dernière partie du script (// creer vignette JPG) en changeant les dimensions et le répertoire de destination, mais cela ne fonctionne pas. Ca génère la première mais pas la deuxième, comme si les paramètres se perdaient en cours de route. Est-il possible de générer deux vignettes différentes et de les enregistrer dans deux répertoires différents ?
Merci beaucoup pour votre aide.
Formulaire :
echo "<form method=POST action=image-enreg.php enctype=\"multipart/form-data\">";
echo "<input type=file size=30 name=photo><br><br><br>";
echo "<input type=submit name=envoi value=enregistrer>";
echo "</form>";
Traitement :
$extensions_ok = array('jpg','JPG');
$taille_max = 500000;
$dest_dossier = 'illustrations/';
// nom du fichier
$dest_fichier = basename($_FILES['photo']['name']);
// extension du fichier
$ext = strrchr($dest_fichier,'.');
// nouveau nom du fichier
$dest_fichier = ''.$pseudo.''.$ext.'';
// enregistrement du fichier
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
// creer vignette JPG
if ($ext == '.jpg' OR $ext == '.JPG') {
$fichierSource = ''.$dest_dossier.''.$dest_fichier.'';
$source = ImageCreateFromJpeg($fichierSource);
$largeurSource = imagesx($source);
$hauteurSource = imagesy($source);
$rapport = $largeurSource/$hauteurSource;
$somme = $largeurSource+$hauteurSource;
$ratio_paysage = $hauteurSource/($largeurSource/250);
$ratio_portrait = $largeurSource/($hauteurSource/250);
if ( ($somme<500) ) $largeurDestination=''.$largeurSource.'' AND $hauteurDestination=''.$hauteurSource.'' ;
if ( ($rapport>1) && ($somme>=500) ) $largeurDestination='250' AND $hauteurDestination=''.$ratio_paysage.'';
if ( ($rapport<1) && ($somme>=500) ) $largeurDestination=''.$ratio_portrait.'' AND $hauteurDestination='250';
if ( ($rapport==1) && ($somme>=500) ) $largeurDestination='250' AND $hauteurDestination='250';
$im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination);
ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);
ImageJpeg ($im, $fichierSource);
ImageDestroy($im);
}