Est-il possible de détecter les dimensions d'une image en php ?
function resize($image , $largeur_max , $hauteur_max , $source , $destination , $prefixe){
if (!file_exists($source.$image)) {
echo "L'image $source$image n'existe pas";
exit;
}
// On verifie que l'extention du fichier est bien une image jpg, jpeg ou gif
$ext=strtolower(strrchr($image, '.'));
if ($ext!=".jpg" AND $ext!=".jpeg" AND $ext!=".gif"){
echo "<br>Votre image doit être un jpg, jpeg ou gif <br>";
exit;
}
$size = getimagesize($source.$image);
$largeur_src=$size[0];
$hauteur_src=$size[1];
//2ieme verification -> on verifie que le type du fichier est un jpg, jpeg ou gif
// $size[2] -> type de l'image : 1 = GIF , 2 = JPG, JPEG
if ($size[2]!=1 AND $size[2]!=2){
echo "<br>Format non supporté<br>";
exit;
}
if($size[2]==1){ // format gif
$image_src=imagecreatefromgif($source.$image);
}
if($size[2]==2){ // format jpg ou jpeg
$image_src=imagecreatefromjpeg($source.$image);
}
// on verifie que l'image source ne soit pas plus petite que l'image dedestination
if ($largeur_src>$largeur_max OR $hauteur_src>$hauteur_max){
// si la largeur est plus grande que la hauteur
if ($hauteur_src<=$largeur_src){
$ratio=$largeur_max/$largeur_src;
}else{
$ratio=$hauteur_max/$hauteur_src;
}
}else{
$ratio=1; // l'image créee sera identique à l'originale
}
umask(022);
$image_dest=imagecreatetruecolor(round($largeur_src*$ratio),
round($hauteur_src*$ratio));
imagecopyresized($image_dest, $image_src, 0, 0, 0, 0,
round($largeur_src*$ratio), round($hauteur_src*$ratio), $largeur_src, $hauteur_src);
if(!imagejpeg($image_dest, $destination.$prefixe.$image)){
echo "la création de l'image a echouée pour l'image $image";
chmod ('../articles/img/'.$prefixe.''.$image.'', 0777);
exit;
}
else
{
echo 'la création de l\'image a fonctionné pour l\'image '.$destination.''.$prefixe.''.$image.' <br /> Pour la placer a droite dans l\'article: <br />[imgdroite]'.$prefixe.''.$image.'[/img]<br><br>Pour la placer a droite dans l\'article: <br />[imggauche]'.$prefixe.''.$image.'[/img]';
exit;
}
}
<?php
include "../mainfile.php"; //fichier de conf, avec toutes les fonctions...
//--------------------------------------
// DEFINITION DES VARIABLES
//--------------------------------------
$target = "../articles/source/"; // Repertoire cible
$max_size = 10000000; // Taille max en octets du fichier
$width_max = 10000000; // Largeur max de l'image en pixels
$height_max = 10000000; // Hauteur max de l'image en pixels
$extensions_ok = array("jpg","gif","png","jpeg");
//------------------------------------------------------------
// DEFINITION DES VARIABLES LIEES AU FICHIER
//------------------------------------------------------------
$nom_file = $_FILES['fichier']['name'];
$taille = $_FILES['fichier']['size'];
$tmp = $_FILES['fichier']['tmp_name'];
$chemin = $target.$_FILES['fichier']['name'];
$extension = substr($nom_file,-3); // Récupération de l'extension
//---------------------------
// SCRIPT D'UPLOAD
//---------------------------
if($_POST['posted'])
{
// On vérifie si le champ est rempli
if($_FILES['fichier']['name'])
{
// On vérifie l'extension du fichier
if(in_array(strtolower($extension),$extensions_ok))
{
// On récupère les dimensions du fichier
$infos_img = getimagesize($_FILES['fichier']['tmp_name']);
// On vérifie les dimensions et taille de l'image
if(($infos_img[0] <= $width_max) && ($infos_img[1] <= $height_max) && ($taille <= $max_size))
{
// Si c'est OK, on teste l'upload
if(move_uploaded_file($tmp,$chemin))
{
// Si upload OK alors on affiche le message de réussite
echo '<p>Image uploadée avec succès !</p>';
echo '<ul><li>Fichier : '.$_FILES['fichier']['name'].'</li>';
echo '<li>Taille : '.$_FILES['fichier']['size'].' Octets</li>';
echo '<li>Largeur : '.$infos_img[0].' px</li>';
echo '<li>Hauteur : '.$infos_img[1].' px</li></ul>';
chmod ('../articles/source/'.$_FILES['fichier']['name'].'', 0777);
}
else
{
// Sinon on affiche une erreur système
echo '<p>Problème lors de l\'upload !</p>';
}
}
else
{
// Sinon erreur sur les dimensions et taille de l'image
echo '<p>Erreur dans les dimensions ou taille de l\'image !</p>';
}
}
else
{
// Sinon on affiche une erreur pour l'extension
echo '<p>Votre image ne comporte pas une extension valide !</p>';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
echo '<p>Le champ du formulaire est vide !</p>';
}
}
if (isset($_POST['taille'])){
$taille = $_POST['taille'];
if ($taille == a)
{
$larg = 260;
$haut = 200;
echo "Taille choisit: A<br />";
}
elseif ($taille == b)
{
$larg = 200;
$haut = 150;
echo "Taille choisit: B<br />";
}
elseif ($taille == c)
{
$larg = 230;
$haut = 175;
echo "Taille choisit: B<br />";
}
else
{
echo "Erreur de taille >>";
}
$number = mysql_query("SELECT id FROM articles ORDER BY id DESC LIMIT 0, 1");
list($id) = mysql_fetch_array($number);
$prefix = $id+1;
$prefi = ''.$prefix.'_';
$desti = "../articles/img/";
$sourc = '../articles/source/';
$limage = $_FILES['fichier']['name'];
resize($limage , $larg , $haut , $sourc , $desti , $prefi);
}
?>
<html>
<head>
<title>Upload d'une image sur le serveur !</title>
</head>
<body>
<form enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" method="POST">
<p>Envoyer le fichier :</p>
<input type="hidden" name="posted" value="1">
<input name="fichier" type="file">
<select name="taille">
<OPTION value="a">Taille grande (a)
<OPTION value="b">Taille petite (b)
<OPTION value="c">Taille moyenne (c)
</select>
<input type="submit" value="Uploader">
</form><br>
<img src="A.gif" width="260" height="200"> <img src="C.gif" width="230" height="175"> <img src="B.gif" width="200" height="150">
</body>
</html>
➡️ Offre MyRankingMetrics ⬅️
pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)
Voir les détails ici