samt01
Messages postés16Date d'inscriptionsamedi 13 mars 2004StatutMembreDernière intervention 5 octobre 2010
-
20 avril 2010 à 22:55
mailliam
Messages postés261Date d'inscriptionmardi 2 juillet 2002StatutMembreDernière intervention10 mars 2014
-
27 avril 2010 à 10:12
Bonjour à tous,
j'aimerais redimensionner mes images si la largeur ou la longueur est supérieur à 200 px.
J'aimerais les redimensionner en maximum 200 pixel en conservant les proportions.
Voici mon script de base :
if(isset($_FILES['up_photo']))
{
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
// on défini une variable $ratio qui vaudra 150 dans notre cas (150 pixels).
// En fait, pour nos miniatures, nous allons respecter le ratio de l'image originale, mais nous allons forcer sa taille à 150 pixels,
// soit en hauteur soit en largeur (tout dépend de l'orientation de notre image : paysage ou portrait).
$ratio = 50;
// Création des dossiers
if (!file_exists($dest_dossier))
{
mkdir ($dest_dossier, 0777);
}
if (!file_exists($dest_dossier_mini))
{
mkdir ($dest_dossier_mini, 0777);
}
// on compte d'abord le nombre d'image dans le répertoire
$num_images = count_files($dest_dossier);
if ($num_images < 10)
{
// on teste si le champ permettant de soumettre un fichier est vide ou non
if (empty($_FILES['up_photo']['tmp_name']))
{
// si oui, on affiche un petit message d'erreur
$erreur[] = 'Aucun fichier envoyé.';
}
else
{
// on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier
//(je vous suggère de regarder la documentation de la fonction getimagesize pour de plus amples informations)
$tableau = @getimagesize($_FILES['up_photo']['tmp_name']);
if ($tableau == FALSE)
{
// si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur
unlink($_FILES['up_photo']['tmp_name']);
$erreur[] = 'Votre fichier n\'est pas une image.';
}
else
{
// vérifications de l'extention
if( !in_array( substr(strrchr($_FILES['up_photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur[] = 'Veuillez sélectionner un fichier de type png, gif ,jpg ou jpeg !';
}
elseif( file_exists($_FILES['up_photo']['tmp_name'])
and filesize($_FILES['up_photo']['tmp_name']) > $max_size)
{
$erreur[] = 'Votre fichier doit faire moins de 500Ko !';
}
// on détremine la taille de la photo
$up_taille = $_FILES['up_photo']['size'];
$dest_fichier basename($_FILES['up_photo']['name']);// cela donne le même résultat que la commande> $_FILES['up_photo']['name'];
// si on a déjà un fichier qui porte le même nom que le fichier que l'on tente d'uploader, on modifie le nom du fichier que l'on upload
if (is_file($dest_dossier .$_FILES['up_photo']['name']))
{
// echo 'dest_fichier = '.$dest_fichier;
$dest_fichier = '_'.$_FILES['up_photo']['name'];
// echo 'dest_fichier = '.$dest_fichier;
}
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// on vérifie si le fichier n'est pas déjà présent :
$chemin_fic = $dest_dossier . $dest_fichier;
/*if (file_exists($chemin_fic))
{
$dest_fichier = 'DUP'.$dest_fichier;
echo 'dest_fichier = '.$dest_fichier;
}*/
// si l'image n'est ni un jpeg, ni un png, on supprime le fichier uploadé et on affiche le message d'erreur
if (!($tableau[2] == 2 || $tableau[2] == 3))
{
unlink($_FILES['up_photo']['tmp_name']);
$erreur[] = 'Votre image est d\'un format non supporté. Les formats supportés sont uniquement jpeg et png.';
}
}
}
}
else
{
$erreur[] = 'Vous ne pouvez pas charger plus de 10 photos';
}
// copie du fichier
if(!isset($erreur))
{
// copie du fichier
if (move_uploaded_file($_FILES['up_photo']['tmp_name'], $dest_dossier . $dest_fichier)) // à ce moment on met le fichier sur le serveur
{
// Creation de l'image miniature
// si notre image est de type jpeg
if ($tableau[2] == 2)
{
// on crée une image à partir de notre grande image à l'aide de la librairie GD
$src = imagecreatefromjpeg($dest_dossier.'/'.$dest_fichier);
// on teste si notre image est de type paysage ou portrait
if ($tableau[0] > $tableau[1])
{
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
}
else
{
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
}
// on copie notre fichier généré dans le répertoire des miniatures
imagejpeg ($im, $dest_dossier_mini.'/'.$dest_fichier);
}
if ($tableau[2] == 3)
{
$src = imagecreatefrompng($dir.'/'.$file_upload);
if ($tableau[0] > $tableau[1])
{
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
}
else
{
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
}
imagepng ($im, $dir_mini.'/'.$file_upload);
}
mailliam
Messages postés261Date d'inscriptionmardi 2 juillet 2002StatutMembreDernière intervention10 mars 20143 27 avril 2010 à 10:12
Tchô!
je sais pas si tu attends tjs une réponse 7 jours après, moi je ferais comme ca:
($donnees['img'] est le chemin de l'img inscrit dans la base de données, car j'imagine que c'est des img que les membres du site ont téléchargées)
<? if ($donnees['img'] == '')
{ //on s'assure qu'il y a bien une img (sinon on fait rien..)
}
else
{ ?>
<? $dimensions=getimagesize($donnees['img']);
if($dimensions[0]<=200 && $dimensions[1]<=200) //200x200px
{
?>