J'ai un formulaire de contact et je souhaite enregistrer plusieurs photos.
On va commencer par une.
Je souhaite enregistrer à la fois une image redimensionnée en 400px / 400 px mx et une miniature de 50px / 50px. J'ai choisi la méthode d'enregistrement dans le filesystem (avec un lien id_photo dans la db), j'ai donc un dossier /upload, et un dossier /upload/vignette.
Dans mon code html, j'ai ceci
Code : Tout sélectionner
<input type="file" name="photo_01" id="photo_01" />Code : Tout sélectionner
<?php require_once('../fonction2.php'); ?>
<?php
if($_FILES['photo_01'])
{
$format_ok = array(
"image/pjpeg" => ".jpg",
"image/jpeg" => ".jpg",
"image/jpeg" => ".JPG",
"image/gif" => ".gif",
"image/png" => ".png",
);
$type_file = $_FILES['photo_01']['type'];
phpinfo(32);
if($_FILES['photo_01']['error'] == 0) //qd = à 0 c qu'il n'y a pas d'erreur
{
if(isset($formats_ok[$type_file]))
{
$new_path = "upload/";
$extension = $formats_ok[$type_file];
$photo_01 = date("ymdhis").$extension;
$last_path = $_FILES['photo_01']['tmp_name'];
$photo_01 = $new_path.$photo_01;
move_uploaded_file($last_path,$photo_01);
// redimension image
$file=$photo_01;
$hauteur=400;
$largeur=400;
//recup taille du photo
$size=getimagesize($file);
//print_r($size);
$largeur_origine=$size[0];
$hauteur_origine=$size[1];
//copie de l'image du HD vers mémoire du serveur dans $src
if($size['mime']=="image/jpeg" OR $size['mime']=="image/pjpeg")
{
$src = imagecreatefromjpeg($file);
}
elseif($size['mime']=="image/png")
{
$src = imagecreatefrompng($file);
}
//caul des dimensions finales
$ratio_x=$largeur/$largeur_origine;
$ratio_y=$hauteur/$hauteur_origine;
if($ratio_x>=1 and $ratio_y>=1)//si image plus petite que canevas
{
$largeur_finale=$largeur_origine;
$hauteur_finale=$hauteur_origine;
}
elseif($ratio_x < $ratio_y)//si largeur nettement plus petite
{
//echo "redim ratio_x <br>";
$largeur_finale=$largeur;
$hauteur_finale=ceil($hauteur_origine*$ratio_x);
}
else //inverse
{
//echo "redim ratio_y <br>";
$largeur_finale=ceil($largeur_origine*$ratio_y);
$hauteur_finale=$hauteur;
}
/*echo "dimensions de départ=$largeur_origine x $hauteur_origine<br>";
echo "dimensions max d'affichage = $largeur x $hauteur<br>";
echo "dimension_calculée=$largeur_finale x $hauteur_finale<br>";
echo "ratios=$ratio_x and $ratio_y";
exit;*/
//création de l'image de réception aux dimensions calculées
$dst = imagecreatetruecolor($largeur_finale,$hauteur_finale);
//copie de l'image origine ($src) dans l'image réception ($dst) en redimensionnant
imagecopyresized($dst,$src,0,0,0,0,$largeur_finale,$hauteur_finale,$largeur_origine,$hauteur_origine);
$gris = imagecolorallocate($dst,125, 125, 125);
imagestring($dst,2,2,2,$copyright,$gris);
if($_FILES['photo_01'])
{
include("fonction2.php");
$date=date("ymdhis");
upload_img("photo",400,400,$date,$nom,"upload/");
upload_img("photo",50,50,$date,"upload/vignettes/");
} //fermeture test existance du photo
//header("content-type: image/jpeg");//affiche image
imagejpeg($dst,$file,80);//ecrit image sur disque dur
//imagejpeg($dst,$new_file,80);//renvoie image au navigateur
imagedestroy($src);
imagedestroy($dst);
//end redimension image
}
else {echo 'erreur de format';}
}
}
?>
<?php
if($_FILES['photo_01'])
{
$date=date("ymdhis");
upload_img("photo_01",400,400,$date,"upload/");
upload_img("photo_01",50,50,$date,"upload/vignettes/"); // virer car pas de vignettes
} //fermeture test existance du fichier
?>Code : Tout sélectionner
<?php
function affiche_date ($date,$glue="/")
{
$array=explode('-',$date);
$chaine=$array[2].$glue.$array[1].$glue.$array[0];
return $chaine;
}
function convert_date($date,$glue="-")
{
$array=explode('/',$date);
$chaine=$array[2].$glue.$array[1].$glue.$array[0];
return $chaine;
}
?>
<?php
function affiche_img($nom,$chemin,$format,$alt_text,$large)
{
$photo_01 = $chemin.$nom.$format;
if(file_exists($photo_01))
{
echo "<img src=\"$photo_01\" width=\"$large\" alt=\"$alt_text\" />";
}
}
function upload_img($champ,$largeur=400,$hauteur=400,$nom)
{
if($_FILES['photo_01'])
{
$format_ok = array(
"image/pjpeg" => ".jpg",
"image/jpeg" => ".jpg",
"image/jpeg" => ".JPG",
"image/gif" => ".gif",
"image/png" => ".png",
);
$type_file = $_FILES['photo_01']['type'];
phpinfo(32);
if($_FILES['photo_01']['error'] == 0) //qd = à 0 c qu'il n'y a pas d'erreur
{
if(isset($formats_ok[$type_file]))
{
$new_path = "upload/";
$extension = $formats_ok[$type_file];
$photo_01 = date("ymdhis").$extension;
$last_path = $_FILES['photo_01']['tmp_name'];
$photo_01 = $new_path.$photo_01;
move_uploaded_file($last_path,$photo_01);
// redimension image
$file=$photo_01;
$hauteur=400;
$largeur=400;
//recup taille du photo
$size=getimagesize($file);
//print_r($size);
$largeur_origine=$size[0];
$hauteur_origine=$size[1];
//copie de l'image du HD vers mémoire du serveur dans $src
if($size['mime']=="image/jpeg" OR $size['mime']=="image/pjpeg")
{
$src = imagecreatefromjpeg($file);
}
elseif($size['mime']=="image/png")
{
$src = imagecreatefrompng($file);
}
//caul des dimensions finales
$ratio_x=$largeur/$largeur_origine;
$ratio_y=$hauteur/$hauteur_origine;
if($ratio_x>=1 and $ratio_y>=1)//si image plus petite que canevas
{
$largeur_finale=$largeur_origine;
$hauteur_finale=$hauteur_origine;
}
elseif($ratio_x < $ratio_y)//si largeur nettement plus petite
{
//echo "redim ratio_x <br>";
$largeur_finale=$largeur;
$hauteur_finale=ceil($hauteur_origine*$ratio_x);
}
else //inverse
{
//echo "redim ratio_y <br>";
$largeur_finale=ceil($largeur_origine*$ratio_y);
$hauteur_finale=$hauteur;
}
/*echo "dimensions de départ=$largeur_origine x $hauteur_origine<br>";
echo "dimensions max d'affichage = $largeur x $hauteur<br>";
echo "dimension_calculée=$largeur_finale x $hauteur_finale<br>";
echo "ratios=$ratio_x and $ratio_y";
exit;*/
//création de l'image de réception aux dimensions calculées
$dst = imagecreatetruecolor($largeur_finale,$hauteur_finale);
//copie de l'image origine ($src) dans l'image réception ($dst) en redimensionnant
imagecopyresized($dst,$src,0,0,0,0,$largeur_finale,$hauteur_finale,$largeur_origine,$hauteur_origine);
$gris = imagecolorallocate($dst,125, 125, 125);
imagestring($dst,2,2,2,$copyright,$gris);
if($_FILES['photo_01'])
{
include("fonction2.php");
$date=date("ymdhis");
upload_img("photo",400,400,$date,$nom,"upload/");
upload_img("photo",50,50,$date,"upload/vignettes/");
} //fermeture test existance du photo
//header("content-type: image/jpeg");//affiche image
imagejpeg($dst,$file,80);//ecrit image sur disque dur
//imagejpeg($dst,$new_file,80);//renvoie image au navigateur
imagedestroy($src);
imagedestroy($dst);
//end redimension image
}
else {echo 'erreur de format';}
}
}
}
?>