Je sollicite votre aide parce que là je ne comprend absolument pas.
J'ai fais un upload d'image avec un resize et une creation de repertoire ...
Mais le problème arrive au moment de l'utilisation de la fonction imagejpeg().
Alors avant de poser une question, j'ai pas mal fouillé sur le net pour savoir si ce problème était connu. Et apparement oui c'est une histoire de droit...
Alors les droits sur mes repertoires sont tous à 777.
Je vous mets le code en esperant que vous pourrez y faire quelque chose.
Fichier photos.php
Code : Tout sélectionner
if(isset($_POST['ajouter']))
{
if($_POST['repertoire']!='Créer ...') { $repertoire=$_POST['repertoire']; }
else { $repertoire=$_POST['repertoire_exist']; }
$repertoire=str_replace(" ","_",$repertoire);
$content_dir="images/upload/".$repertoire."/";
$content_dir_mini="images/upload/".$repertoire."_mini/";
$tmp_file = $_FILES['fichier']['tmp_name'];
if($_POST['repertoire']!='Créer ...') { mkdir($content_dir); mkdir($content_dir_mini); chmod($content_dir, 0777); chmod($content_dir_mini, 0777); }
if(!is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
$fichier=$_FILES['fichier']['name'];
$tab=explode(".",$fichier);
$pos=sizeof($tab)-1;
$nom=str_replace(" ","_",$_POST['nom']);
$name_file = $nom.'.'.$tab[$pos];
if(!move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
else
{
$sql="insert into photos (nom, fichier, repertoire) values ('$_POST[nom]', '$name_file', '$repertoire')";
mysql_query($sql);
chmod($content_dir . $name_file,0777);
generer_miniature($name_file, 150, 40, $content_dir, $content_dir_mini);
chmod($content_dir_mini . $name_file,0666);
}
}
Code : Tout sélectionner
function generer_miniature($image, $largeur, $hauteur, $source, $dest)
{
$dest = $dest;
$dossier = $source."/";
$img_in = ImageCreateFromJpeg($dossier.$image);
$size = getimagesize($dossier.$image);
$l = $size[0];
$h = $size[1];
if (($l >= $largeur) && ($h>= $hauteur))
{
$new_haut = ($h * $largeur) / $l;
if($new_haut < $hauteur)
{
$new_haut = $hauteur;
$new_larg = ($l * $hauteur) / $h;
}
else
{
$new_larg = $largeur;
}
$img_out = ImageCreate($new_larg, $new_haut);
ImageCopyResized($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
$im = ImageCreate($largeur, $hauteur);
ImageCopy($im, $img_out, 0, 0, 0, 0, $largeur, $hauteur);
ERREUR ===> ImageJpeg($im, $dest, 90);
ImageDestroy($img_out);
ImageDestroy($im);
}
elseif (($l < $largeur) && ($h >= $hauteur))
{
$img_out = ImageCreate($l, $h);
ImageCopyResized($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
$im = ImageCreate($l, $hauteur);
ImageCopy($im, $img_out, 0, 0, 0, 0, $l, $hauteur);
ImageJpeg($im, $dest, 90);
ImageDestroy($img_out);
ImageDestroy($im);
}
elseif ($l >= $largeur && $h < $hauteur)
{
$img_out = ImageCreate($l, $h);
ImageCopyResized($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
$im = ImageCreate($largeur , $h);
ImageCopy($im, $img_out, 0, 0, 0, 0, $largeur, $hauteur);
ImageJpeg($im, $dest, 100);
ImageDestroy($img_out);
ImageDestroy($im);
}
elseif ($l < $largeur && $h< $hauteur)
{
ImageJpeg($img_in, $dest, 90);
}
ImageDestroy($img_in);
}
Je sais que ce n'est pas evident de rentrer dans la prog de quelqu'un d'autre.
La fonction a été trouvé sur le net.
Damien