| Administrateur 653 Posts |
[ code ] !
Après avoir exécuté move_uploaded_file, il faut créer ta preview à partir de ce fichier, dans le même répertoire ou dans un autre.
Tu trouveras les fonctions suivantes dans la doc PHP :
imagecreatetruecolor
imagecreatefromjpeg
imagecreatefrompng
imagecreatefromgif
imagecopyresampled
imagejpeg
Et voici un petit bout de code pour te mettre sur la voie :
$jpgquality=90; // Qualité compression jpeg
$dest_width = 200; // Largeur image destination
$dest_height = 150; // Hauteur image destination
$source_file = $arrivee; // Fichier d'origine
$dest_path = 'thumbs/'.$arrivee; // Fichier de sortie (voir pour gérer le répertoire)
$dest_image = imagecreatetruecolor($dest_width,$dest_height);
if(preg_match('/\.(jpg|jpeg)$/i',$source_file))
$source_image = imagecreatefromjpeg($source_file);
else if(preg_match('/\.(png)$/i',$source_file))
$source_image = imagecreatefrompng($source_file);
else if(preg_match('/\.(gif)$/i',$source_file))
$source_image = imagecreatefromgif($source_file);
else
$source_image = false;
$dest_x = $dest_y = $source_x = $source_y = 0;
if($dest_image && $source_image) {
imagecopyresampled($dest_image,$source_image,$dest_x,$dest_y,$source_x,$source_y,$dest_width,$dest_height,$source_width,$source_height);
imagejpeg($dest_image,$dest_path,$jpgquality);
}
En décomposant ton problème en tâches simples je suis sûr que tu sauras quoi utiliser Modifié par dew (21 Apr 2008 - 17:36)
|
| 17 Posts |
Bonjour , je m'en sors toujours pas avec cette fonction redimensionnement de l'image , la fonction upload marche nickel, seul la partie redimensionnement ne me crée pas de vignette.
Est ce quelqu'un pourrais m'aider
Merci beaucoup
bonne journee
<?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);
}
}
}
}
}
}
// 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;
}
merci beaucoup de votre aide
bonne journee Modifié par jeje1978 (13 May 2008 - 12:33)
|