Accueil > Forum > > > > Redimensionner une image en 200 par 200
Redimensionner une image en 200 par 200
mardi 20 avril 2010 à 22:55:07 |
Redimensionner une image en 200 par 200

samt01
|
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 :
Code PHP :
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);
}
Merci d'avance pour votre aide.
|
|
mardi 27 avril 2010 à 10:12:35 |
Re : Redimensionner une image en 200 par 200

mailliam
|
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
{
?>
<br><img src="<?php echo $donnees['img']; ?>" border="0" ALT=""><br>
<?php }
else
{
?>
<br><img src="<?php echo $donnees['img']; ?>" border="0" width="200" hight="200" ALT=""><br>
<? }
}
?>
et voilou 
|
|
Cette discussion est classée dans : fichier, tableau, dest, ratio, if
Répondre à ce message
Sujets en rapport avec ce message
Uploader une image. [ par mwa_85 ]
Bonjour, Vola daeux semaine que je suis en rade pour réussir à faire ce p*****n de script, pour uploader 1 image, la copié dans un dossier et la min
Tableau dans php [ par shadow578 ]
Bonjour, Alors j'ai un petit script qui me permet de lister les fichiers présents dans le dossier, jusqu'à la tout va bien, mais j'aimerai les cla
Comment récupérer sur le serveur un fichier image uploadé par un utilisateur ? [ par pjcleder ]
PAT Bonjour, Mon hébergeur a déclaré /tmp comme répertoire upload_tmp_dir. D' après mon script, le fichier image est bien envoyé mais je ne vois pas c
trop de lignes, faire plusieur pages [ par shadow578 ]
bonjour, Voilà j'ai fait un explorer de fichier en php, donc sa m'affiche les fichier avec la taille etc.. J'aimerai quand il y a plus de 30fichiers
Problème affichage tableau avec timer [ par maxencergenty ]
Salut, voila j'ai développer un petit module pour joomla qui affiche des vignettes à partir de la base de donnée. On peut sélectionner la catégorie, l
Comment enregistrer des résultats dans un tableau ? [ par cdevilliers ]
Bonjour, Je débute en PHP. J'ai commencé à coder la fonction ci-dessous (qui est certainement optimisable) - Lecture d'un fichier et suppression de ch
récupérer un fichier de la BD MYSQL [ par mao54 ]
salutj'ai des fichier stockés dans la base de donnée et j'ai une methode de recherche qui affiche ces resultats dans un tableau.je souhaite dans la co
Affichage des fichiers par date [ par ninho44 ]
Bonjour tout le monde,Je suis débutant en PHP, et je suis en train de créer un site. Mon problême: Je fais un systeme de news qui affiche sur ma page
Problemen copy sur dédié [ par laubro ]
bonjourj'ai un script de copie de repertoire qui tourne impec sur un espace mutualisé, mais une fois sur un dédié, il ne fonctionne pas bien, la copie
Damier 4*4 php [ par C0rt1ch ]
Salut,J'ai un probleme dans la création d'un Damier de 4*4 en php.Je voudrais remplir un tableau, avec le nom des images afin de les garder en mémoire
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|