|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
UPLOAD MULTIPLE IMAGE GIF/JPG/PNG AVEC ROTATION ET REDIMENSIONNEMENT GARDANT LES PROPORTIONS
Information sur la source
Description
Alors voilà, Maintenant que j'ai assez profité de toutes les astuces que fournis ce site, je me suis dit que je pouvais essayer d'aider les autres. J'ai cherché pendant longtemps un upload bien expliqué, et pour finir je me le suis fait moi-même ;) en cherchant sur le site de php.net. De plus j'ai aussi fait en sorte qu'il redimensionne direct l'image comme désiré. Dans le zip il y a 2 fichiers d'upload un permettant une miniature qui garde les proportions de l'originale et l'autre qui crée une miniature aux dimension données, déformant l'original. J'y ai maintenant rajouté un fichier avec formulaire su rla page .php qui permet d'uploader plusieurs fichiers en une fois :D Etant un programmeur amateur, je vous demanderai de bien vouloir être indulgents.
Source
- index.php :
- -----------
- <html>
- <head>
- <title>Upload</title>
- </head>
-
- <body>
- <form name="upload" method="post" action="upload_mini_proportionnee_rotation.php" enctype="multipart/form-data">
-
- <?php
- $nbr_champs = 10;
- for($nbr=0;$nbr<$nbr_champs;$nbr++){
- ?>
-
- <?php echo $nbr; ?>. <input type="file" name="fichier_upload_<?php echo $nbr; ?>" id="fichier_upload_<?php echo $nbr; ?>"><br>
- <select name="fichier_rotation_<?php echo $nbr; ?>">
- <option>Pas de rotation</option>
- <option value="90">90° gauche</option>
- <option value="270">90° droite</option>
- <option value="180">180°</option>
- </select>
- <br>
-
- <?php
- }
- ?>
-
- <input type="submit" name="Submit" value="Uploader">
- <input name="nbr_f" type="hidden" value="<?php echo $nbr_champs; ?>">
- </form>
- </body>
- </html>
-
-
- upload_mini_proportionnee_rotation.php :
- ---------------------------------------
- <?php
- // nombre de fichiers à uploader
- $nbr_fichiers = $_POST['nbr_f'];
-
- // boucle permettant d'uploader les fichiers un à un
- for($nbr=0;$nbr<$nbr_fichiers;$nbr++){
-
- // on récupère les infos du fichier à uploader
- $fichier_temp = $_FILES['fichier_upload_'.$nbr]['tmp_name'];
- $fichier_nom = $_FILES['fichier_upload_'.$nbr]['name'];
-
- // on défini les dimensions et le type du fichier
- list($fichier_larg, $fichier_haut, $fichier_type, $fichier_attr)=getimagesize($fichier_temp);
-
- // infos de contrôle du fichier
- $fichier_poids_max = 500000;
- $fichier_h_max = 1224;
- $fichier_l_max = 1632;
-
- // dossier de destination
- $fichier_dossier = 'images/';
-
- // extension du fichier
- $fichier_ext = substr($fichier_nom,strrpos( $fichier_nom, '.')+1);
-
- // on renomme le fichier
- $fichier_date = date("ymdhis");
- $fichier_n_nom = $nbr."_".$fichier_date.".".$fichier_ext;
-
- // on vérifie s'il y a bien un fichier à uploader
- if (!empty($fichier_temp) && is_uploaded_file($fichier_temp)) {
-
- // on vérifie le poids du fichier
- if (filesize($fichier_temp)<$fichier_poids_max) {
-
- // types de fichiers autorises 1=gif / 2=jpg / 3=png
- if (($fichier_type===1) || ($fichier_type===2) || ($fichier_type===3)) {
-
- // on vérifie si l'image n'est pas trop grande
- if (($fichier_larg<=$fichier_l_max) && ($fichier_haut<=$fichier_h_max)) {
-
- // si le fichier est ok, on l'upload sur le serveur
- if (move_uploaded_file($fichier_temp, $fichier_dossier.$fichier_n_nom)) {
-
- // on donne un acces total sur le fichier
- chmod ($fichier_dossier.$fichier_n_nom, 0777);
-
-
- /******************
- rotation de l'image
- ******************/
-
- if (!empty($_POST['fichier_rotation_'.$nbr]) && is_numeric($_POST['fichier_rotation_'.$nbr])) {
-
- $degre_rotation = $_POST['fichier_rotation_'.$nbr];
-
- $image = getimagesize($fichier_dossier.$fichier_n_nom);
- // création de l'image
- if($fichier_type == "1") {
- $source = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
- }
- if($fichier_type == "2") {
- $source = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
- }
- if($fichier_type == "3") {
- $source = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
- }
- //rotation de l'image
- $rotation = imagerotate($source,$degre_rotation,-1);
- //Le -1 permet de remplir les zones vides avec du transparent
- // sauvegarde de l'image finale
- if($fichier_type == "1") {
- imagegif($rotation,$fichier_dossier.$fichier_n_nom);
- }
- if($fichier_type == "2") {
- imagejpeg($rotation,$fichier_dossier.$fichier_n_nom);
- }
- if($fichier_type == "3") {
- imagepng($rotation,$fichier_dossier.$fichier_n_nom);
- }
-
- if (($degre_rotation == '90') || ($degre_rotation == '270')) {
-
- $n_larg = $fichier_haut;
- $n_haut = $fichier_larg;
-
- $fichier_larg = $n_larg;
- $fichier_haut = $n_haut;
-
- }
- }
-
-
- /***********************
- création de la miniature
- ***********************/
-
- // dimension maximale largeur et hauteur comprise
- $taille_max = 100;
-
- // si le fichier est plus grand que $taille_max on le miniaturise
- if (($fichier_larg > $taille_max) || ($fichier_haut > $taille_max)) {
-
- // définition des dimensions
- if ($fichier_haut > $fichier_larg){
-
- $mini_haut = $taille_max;
- $mini_larg = $fichier_larg / ($fichier_haut / $taille_max);
-
- }
- //si plus large que haut
- else {
-
- $mini_haut = $fichier_haut / ($fichier_larg / $taille_max);
- $mini_larg = $taille_max;
-
- }
-
- // si le fichier est un .gif
- if ($fichier_type === 1){
-
- // definition de l'image dont on va faire une miniature
- $fichier_source = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
-
- // on prépare le fichier miniature qui accueillera l'image réduite
- $fichier_reduit = imagecreate($mini_larg, $mini_haut);
-
- // fond blanc pour l'image
- $fond_blanc = imagecolorallocate($fichier_reduit, 255, 255, 255);
-
- // dimensions x et y à donner au fichier
- $fichier_larg_red = imagesx($fichier_reduit);
- $fichier_haut_red = imagesy($fichier_reduit);
-
- // on rajoute un mini_ defant le nom du fichier
- $nom_fichier_reduit = 'mini_'.$fichier_n_nom;
-
- // on redimensionne l'image de base dans le fichier $fichier_reduit
- imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
-
- // on rend transparent le fond blanc
- imagecolortransparent($fichier_reduit, $fond_blanc);
-
- // crée le fichier réduit définitif
- imagegif($fichier_reduit, $fichier_dossier.$nom_fichier_reduit);
-
- // on donne un acces total sur le fichier
- chmod($fichier_dossier.$nom_fichier_reduit, 0777);
-
- }
-
- // si le fichier est un .jpg / .jpeg
- if ($fichier_type===2){
-
- // définition de la qualité
- $qualite=80;
-
- // definition de l'image dont on va faire une miniature
- $fichier_source = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
-
- // on prépare le fichier miniature qui accueillera l'image réduite
- $fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);
-
- // dimensions x et y à donner au fichier
- $fichier_larg_red = imagesx($fichier_reduit);
- $fichier_haut_red = imagesy($fichier_reduit);
-
- // on rajoute un mini_ defant le nom du fichier
- $nom_fichier_reduit = 'mini_'.$fichier_n_nom;
-
- // on redimensionne l'image de base dans le fichier $fichier_reduit
- imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
-
- // crée le fichier réduit définitif
- imagejpeg($fichier_reduit, $fichier_dossier.$nom_fichier_reduit, $qualite);
-
- // on donne un acces total sur le fichier
- chmod($fichier_dossier.$nom_fichier_reduit, 0777);
-
- }
-
- // si le fichier est un .png
- if ($fichier_type===3){
-
- // definition de l'image dont on va faire une miniature
- $fichier_source = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
-
- // on prépare le fichier miniature qui accueillera l'image réduite
- $fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);
-
- // dimensions x et y à donner au fichier
- $fichier_larg_red = imagesx($fichier_reduit);
- $fichier_haut_red = imagesy($fichier_reduit);
-
- // on rajoute un mini_ defant le nom du fichier
- $nom_fichier_reduit = 'mini_'.$fichier_n_nom;
-
- // on redimensionne l'image de base dans le fichier $fichier_reduit
- imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
-
- // crée le fichier réduit définitif
- imagepng($fichier_reduit, $fichier_dossier.$nom_fichier_reduit);
-
- // on donne un acces total sur le fichier
- chmod($fichier_dossier.$nom_fichier_reduit, 0777);
-
- }
-
- // si le fichier est plus petit que $taille_max pas besoin de le miniaturiser
- }
- else {
- $nom_fichier_reduit = $fichier_n_nom;
- }
-
- /*************************************
- enregistrement dans la base de données
-
- nom du fichier non réduit :
- -------------------------
- $fichier_n_nom
-
- nom du fichier réduit :
- ---------------------
- $nom_fichier_reduit
- *************************************/
-
- // transfert ok
- //if ($nbr==$nbr_fichiers-1) {
- //echo "Upload et création des miniatures effectué avec succès";
- //}
- echo "Le fichier n°".$nbr." a été uploadé avec succès<br />";
-
- }
- // erreur
- else {
- echo "Le fichier n°".$nbr." n'a pas pu être uploadé<br />";
- }
-
- }
- // erreur
- else {
- echo "Le fichier n°".$nbr." est trop grand<br />";
- }
-
- }
- // erreur
- else {
- echo "Le fichier n°".$nbr." n'a pas le bon format<br />";
- }
-
- }
- // erreur
- else {
- echo "Le fichier n°".$nbr." est trop lourd<br />";
- }
-
- }
- // erreur
- else {
- echo "Pas de fichier à uploader dans le champ n°".$nbr."<br />";
- }
-
- }
- ?>
index.php :
-----------
<html>
<head>
<title>Upload</title>
</head>
<body>
<form name="upload" method="post" action="upload_mini_proportionnee_rotation.php" enctype="multipart/form-data">
<?php
$nbr_champs = 10;
for($nbr=0;$nbr<$nbr_champs;$nbr++){
?>
<?php echo $nbr; ?>. <input type="file" name="fichier_upload_<?php echo $nbr; ?>" id="fichier_upload_<?php echo $nbr; ?>"><br>
<select name="fichier_rotation_<?php echo $nbr; ?>">
<option>Pas de rotation</option>
<option value="90">90° gauche</option>
<option value="270">90° droite</option>
<option value="180">180°</option>
</select>
<br>
<?php
}
?>
<input type="submit" name="Submit" value="Uploader">
<input name="nbr_f" type="hidden" value="<?php echo $nbr_champs; ?>">
</form>
</body>
</html>
upload_mini_proportionnee_rotation.php :
---------------------------------------
<?php
// nombre de fichiers à uploader
$nbr_fichiers = $_POST['nbr_f'];
// boucle permettant d'uploader les fichiers un à un
for($nbr=0;$nbr<$nbr_fichiers;$nbr++){
// on récupère les infos du fichier à uploader
$fichier_temp = $_FILES['fichier_upload_'.$nbr]['tmp_name'];
$fichier_nom = $_FILES['fichier_upload_'.$nbr]['name'];
// on défini les dimensions et le type du fichier
list($fichier_larg, $fichier_haut, $fichier_type, $fichier_attr)=getimagesize($fichier_temp);
// infos de contrôle du fichier
$fichier_poids_max = 500000;
$fichier_h_max = 1224;
$fichier_l_max = 1632;
// dossier de destination
$fichier_dossier = 'images/';
// extension du fichier
$fichier_ext = substr($fichier_nom,strrpos( $fichier_nom, '.')+1);
// on renomme le fichier
$fichier_date = date("ymdhis");
$fichier_n_nom = $nbr."_".$fichier_date.".".$fichier_ext;
// on vérifie s'il y a bien un fichier à uploader
if (!empty($fichier_temp) && is_uploaded_file($fichier_temp)) {
// on vérifie le poids du fichier
if (filesize($fichier_temp)<$fichier_poids_max) {
// types de fichiers autorises 1=gif / 2=jpg / 3=png
if (($fichier_type===1) || ($fichier_type===2) || ($fichier_type===3)) {
// on vérifie si l'image n'est pas trop grande
if (($fichier_larg<=$fichier_l_max) && ($fichier_haut<=$fichier_h_max)) {
// si le fichier est ok, on l'upload sur le serveur
if (move_uploaded_file($fichier_temp, $fichier_dossier.$fichier_n_nom)) {
// on donne un acces total sur le fichier
chmod ($fichier_dossier.$fichier_n_nom, 0777);
/******************
rotation de l'image
******************/
if (!empty($_POST['fichier_rotation_'.$nbr]) && is_numeric($_POST['fichier_rotation_'.$nbr])) {
$degre_rotation = $_POST['fichier_rotation_'.$nbr];
$image = getimagesize($fichier_dossier.$fichier_n_nom);
// création de l'image
if($fichier_type == "1") {
$source = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
}
if($fichier_type == "2") {
$source = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
}
if($fichier_type == "3") {
$source = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
}
//rotation de l'image
$rotation = imagerotate($source,$degre_rotation,-1);
//Le -1 permet de remplir les zones vides avec du transparent
// sauvegarde de l'image finale
if($fichier_type == "1") {
imagegif($rotation,$fichier_dossier.$fichier_n_nom);
}
if($fichier_type == "2") {
imagejpeg($rotation,$fichier_dossier.$fichier_n_nom);
}
if($fichier_type == "3") {
imagepng($rotation,$fichier_dossier.$fichier_n_nom);
}
if (($degre_rotation == '90') || ($degre_rotation == '270')) {
$n_larg = $fichier_haut;
$n_haut = $fichier_larg;
$fichier_larg = $n_larg;
$fichier_haut = $n_haut;
}
}
/***********************
création de la miniature
***********************/
// dimension maximale largeur et hauteur comprise
$taille_max = 100;
// si le fichier est plus grand que $taille_max on le miniaturise
if (($fichier_larg > $taille_max) || ($fichier_haut > $taille_max)) {
// définition des dimensions
if ($fichier_haut > $fichier_larg){
$mini_haut = $taille_max;
$mini_larg = $fichier_larg / ($fichier_haut / $taille_max);
}
//si plus large que haut
else {
$mini_haut = $fichier_haut / ($fichier_larg / $taille_max);
$mini_larg = $taille_max;
}
// si le fichier est un .gif
if ($fichier_type === 1){
// definition de l'image dont on va faire une miniature
$fichier_source = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
// on prépare le fichier miniature qui accueillera l'image réduite
$fichier_reduit = imagecreate($mini_larg, $mini_haut);
// fond blanc pour l'image
$fond_blanc = imagecolorallocate($fichier_reduit, 255, 255, 255);
// dimensions x et y à donner au fichier
$fichier_larg_red = imagesx($fichier_reduit);
$fichier_haut_red = imagesy($fichier_reduit);
// on rajoute un mini_ defant le nom du fichier
$nom_fichier_reduit = 'mini_'.$fichier_n_nom;
// on redimensionne l'image de base dans le fichier $fichier_reduit
imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
// on rend transparent le fond blanc
imagecolortransparent($fichier_reduit, $fond_blanc);
// crée le fichier réduit définitif
imagegif($fichier_reduit, $fichier_dossier.$nom_fichier_reduit);
// on donne un acces total sur le fichier
chmod($fichier_dossier.$nom_fichier_reduit, 0777);
}
// si le fichier est un .jpg / .jpeg
if ($fichier_type===2){
// définition de la qualité
$qualite=80;
// definition de l'image dont on va faire une miniature
$fichier_source = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
// on prépare le fichier miniature qui accueillera l'image réduite
$fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);
// dimensions x et y à donner au fichier
$fichier_larg_red = imagesx($fichier_reduit);
$fichier_haut_red = imagesy($fichier_reduit);
// on rajoute un mini_ defant le nom du fichier
$nom_fichier_reduit = 'mini_'.$fichier_n_nom;
// on redimensionne l'image de base dans le fichier $fichier_reduit
imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
// crée le fichier réduit définitif
imagejpeg($fichier_reduit, $fichier_dossier.$nom_fichier_reduit, $qualite);
// on donne un acces total sur le fichier
chmod($fichier_dossier.$nom_fichier_reduit, 0777);
}
// si le fichier est un .png
if ($fichier_type===3){
// definition de l'image dont on va faire une miniature
$fichier_source = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
// on prépare le fichier miniature qui accueillera l'image réduite
$fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);
// dimensions x et y à donner au fichier
$fichier_larg_red = imagesx($fichier_reduit);
$fichier_haut_red = imagesy($fichier_reduit);
// on rajoute un mini_ defant le nom du fichier
$nom_fichier_reduit = 'mini_'.$fichier_n_nom;
// on redimensionne l'image de base dans le fichier $fichier_reduit
imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
// crée le fichier réduit définitif
imagepng($fichier_reduit, $fichier_dossier.$nom_fichier_reduit);
// on donne un acces total sur le fichier
chmod($fichier_dossier.$nom_fichier_reduit, 0777);
}
// si le fichier est plus petit que $taille_max pas besoin de le miniaturiser
}
else {
$nom_fichier_reduit = $fichier_n_nom;
}
/*************************************
enregistrement dans la base de données
nom du fichier non réduit :
-------------------------
$fichier_n_nom
nom du fichier réduit :
---------------------
$nom_fichier_reduit
*************************************/
// transfert ok
//if ($nbr==$nbr_fichiers-1) {
//echo "Upload et création des miniatures effectué avec succès";
//}
echo "Le fichier n°".$nbr." a été uploadé avec succès<br />";
}
// erreur
else {
echo "Le fichier n°".$nbr." n'a pas pu être uploadé<br />";
}
}
// erreur
else {
echo "Le fichier n°".$nbr." est trop grand<br />";
}
}
// erreur
else {
echo "Le fichier n°".$nbr." n'a pas le bon format<br />";
}
}
// erreur
else {
echo "Le fichier n°".$nbr." est trop lourd<br />";
}
}
// erreur
else {
echo "Pas de fichier à uploader dans le champ n°".$nbr."<br />";
}
}
?>
Conclusion
J'ai réussi à modifier de façon à pouvoir uploader plusieurs fichiers, comme on dit, quand on cherche on trouve :D Good bye all, et merci.
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Historique
- 24 mai 2007 12:10:40 :
- Modification du code pour un upload multiple d'images, ainsi que remise à jour du .zip ;)
- 09 mars 2008 11:38:26 :
- Ajout de la possibilité de tourner l'image lors de l'upload, et bien entendu la miniature par la même occasion ;)
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
upload dans table [ par eax ]
salut!je voudrais savoir s'il est possible d'uploader un fichier (une image par exemple) et le stocker dans un champ d'une base de données mysqlje vou
Upload d'Image et resize de cette image [ par 4feeling ]
je cherche un petit bout de script qui permettrai d'uploader une image jpeg et l'enregistrer dans une taille précise. Par exemple on uploade, et on en
upload d'image [ par guikiki ]
Bonjour à tous!!!voilà..encore un problème que je n'ai toujours pas réussit à résoudre et ce n'est pas faute d'essayer!!voilà, j'ai fait une page en i
Upload image et limitation taille [ par millo ]
Je suis entrain de dévellopé un script ou je propose l'upload de photo mais pour des raisons évidentes je souhaite limiter l'espace disque réservé pou
upload d'images [ par G_ki_aime_pas_le_php ]
Salut à tous!G un petit problème j'essaie d'uploader un fichier et ça fonctionne pas.G TOUT essayé j'en ai marre!Est ce que quelqu'un aurait la soluti
afficher les image d'un repertoir et un sous repertoir + upload [ par angelx ]
bonjour je voudrais afficher les image d'un reperoire et SOUS Repertoire + faire un uploade sans donner le chemin de l'image en utilisant les image ge
Upload :) [ par GuilleW ]
Bonjour bonjour,Je souhaite faire un Upload de fichier.pour cela j'ai un image , et je souhaiterai que lorsque l'on click sur cette image, elle lance
Upload image .. j'ai cherché mais je ne comprends pas .. :S [ par Hash2o ]
Voila, je suis a la recherche d'une solution pour uploader une image sur un serv. J'ai essayé la plus part des solutions proposer sur le site mais je
pb de upload [ par filrouge13 ]
Bonjour,Petit problème de upload et de vérification de l'existence du fichier.J'ai récupéré ce code sur un forum, il devrait
Upload apres Redimension d'une image jpg sous Free [ par MrManchot ]
Tout déja Bonjour a tous (c'est mon premier poste ici).Je suis débutant en php, et je n'arrive pas a Uploader apres avoir redimensionn
|
|