PHP – Fonction de redimensionnement d’images
La fonction ci-après permet de redimensionner correctement une image (les proportions de l’image sont conservées), en lui précisant la hauteur ou largeur...
La fonction ci-après permet de redimensionner correctement une image (les proportions de l’image sont conservées), en lui précisant la hauteur ou largeur...
Vous n’êtes peut être pas sans le savoir, mais la société française aux lapins ne va pas très bien financièrement. En effet, depuis quelques jours...
Chose amusante (qui ne doit pas du tout faire rire chez microsoft) quand vous tapez « moteur de recherche » dans le nouveau jouet Bing alors celui-ci réponds...
Qui n’a jamais rêvé de savoir comment tournait les plus grant moteur de recherche torrent. Après les derniers événements de The Pirate Bay avec la...
Je suis tombé sur une news un peu vieille (2007) mais si comme moi vous êtes passé à coté je vous conseille de le regarder car elle vaut le détour. Voilà un...
Smokin Apps est une nouvelle plateforme qui a pour but de recenser les meilleurs applications pour téléphone. Il n’est pas toujours évident de savoir...
Cette article fait suite à un article lu ce matin sur le très bon blog de Vincent Abry que je recommande. J’ai décidé de m’en inspirer pour vous...
Est-ce l’été qui veut ça ? Tout le monde se veut être plus beau, plus léger, plus performant. Facebook ne déroge pas à la règle. En effet, Facebook...
La fonction qui suit vous permet de protéger vos chaines et d’échapper les mauvais caractères en vu d’un enregistrement MySQL. Cela évite de...
Cette fonction comme son nom l’indique elle permet d’unzip un fichier. Il est possible d’effacer le zip en mettant la varible wipe_zip a...
La fonction ci-après permet de redimensionner correctement une image (les proportions de l’image sont conservées), en lui précisant la hauteur ou largeur max et les...
La fonction ci-après permet de redimensionner correctement une image (les proportions de l’image sont conservées), en lui précisant la hauteur ou largeur max et les répertoires de destination.
fctredimimage ($W_max, $H_max, $rep_Dst, $img_Dst, $rep_Src, $img_Src) ;
3 cas d’utilisations possibles :
A- « normal » : image finale à HAUTEUR ET LARGEUR maxi fixes.
B- « hauteur » : image finale à HAUTEUR maxi fixe (largeur auto)
C- « largeur » : image finale à LARGEUR maxi fixe (hauteur auto)
NB :
Si l’image Source est plus petite que les dimensions indiquées : PAS de redimensionnement.
Mais on peut « forcer » le redimensionnement en ajoutant : $condition = 1 ; (voir le code)
Retourne la valeur :
– true si le redimensionnement et l enregistrement ont bien eu lieu,
– sinon false
Les paramètres :
– $W_max : LARGEUR maxi finale –> ou 0 (zero) si libre
– $H_max : HAUTEUR maxi finale –> ou 0 (zero) si libre
– $rep_Dst : répertoire de l’image de destination (déprotégé) –> ou » (double quote vide)
– $img_Dst : NOM de l’image de destination –> ou » (double quote vide)
– $rep_Src : répertoire de l’image source (déprotégé)
– $img_Src : NOM de l’image source
Extensions :
– acceptées (traitées ici) : .jpg , .jpeg , .png
– $img_Dst et $img_Src doivent avoir la même extension (même type mime) !
La bête :
[php]// ————————-
// fonction de REDIMENSIONNEMENT physique "PROPORTIONNEL" et Enregistrement
// ————————
// retourne : true si le redimensionnement et l enregistrement ont bien eu lieu, sinon false
// ———————–
// La FONCTION : fctredimimage ($W_max, $H_max, $rep_Dst, $img_Dst, $rep_Src, $img_Src)
// Les parametres :
// – $W_max : LARGEUR maxi finale –& ;amp ;gt ; ou 0
// – $H_max : HAUTEUR maxi finale –& ;amp ;gt ; ou 0
// – $rep_Dst : repertoire de l image de Destination (deprotégé) –& ;amp ;gt ; ou » (meme repertoire)
// – $img_Dst : NOM de l image de Destination –& ;amp ;gt ; ou » (meme nom que l image Source)
// – $rep_Src : repertoire de l image Source (deprotégé)
// – $img_Src : NOM de l image Source
// ———————-
// 3 options :
// A- si $W_max != 0 et $H_max != 0 : a LARGEUR maxi ET HAUTEUR maxi fixes
// B- si $H_max != 0 et $W_max == 0 : image finale a HAUTEUR maxi fixe (largeur auto)
// C- si $W_max == 0 et $H_max != 0 : image finale a LARGEUR maxi fixe (hauteur auto)
// Si l’image Source est plus petite que les dimensions indiquees : PAS de redimensionnement.
// ———————
// $rep_Dst : il faut s’assurer que les droits en écriture ont été donnés au dossier (chmod)
// – si $rep_Dst = » : $rep_Dst = $rep_Src (meme repertoire que l image Source)
// – si $img_Dst = » : $img_Dst = $img_Src (meme nom que l image Source)
// – si $rep_Dst= » ET $img_Dst= » : on ecrase (remplace) l image source !
// ——————–
// NB : $img_Dst et $img_Src doivent avoir la meme extension (meme type mime) !
// Extensions acceptees (traitees ici) : .jpg , .jpeg , .png
// Pour ajouter d autres extensions : voir la bibliotheque GD ou ImageMagick
// (GD) NE fonctionne PAS avec les GIF ANIMES ou a fond transparent !
// ——————-
// UTILISATION (exemple) :
// $redimOK = fctredimimage(120,80,’reppicto/’,’monpicto.jpg’,’repimage/’
// ,’monimage.jpg’) ;
// if ($redimOK == true) { echo ‘Redimensionnement OK !’ ; }
// ——————
function fctredimimage($W_max, $H_max, $rep_Dst, $img_Dst, $rep_Src, $img_Src) {
// —————-
$condition = 0 ;
// Si certains parametres ont pour valeur » :
if ($rep_Dst == ») { $rep_Dst = $rep_Src ; } // (meme repertoire)
if ($img_Dst == ») { $img_Dst = $img_Src ; } // (meme nom)
// —————-
// si le fichier existe dans le répertoire, on continue…
if (file_exists($rep_Src.$img_Src) & ;amp ;amp ;& ;amp ;amp ; ($W_max !=0 || $H_max !=0)) {
// ————–
// extensions acceptees :
$ExtfichierOK = ‘" jpg jpeg png"’ ; // (l espace avant jpg est important)
// extension fichier Source
$tabimage = explode(‘.’,$img_Src) ;
$extension = $tabimage[sizeof($tabimage)-1] ; // dernier element
$extension = strtolower($extension) ; // on met en minuscule
// —————
// extension OK ? on continue …
if (strpos($ExtfichierOK,$extension) != ») {
// ———–
// recuperation des dimensions de l image Src
$img_size = getimagesize($rep_Src.$img_Src) ;
$W_Src = $img_size[0] ; // largeur
$H_Src = $img_size[1] ; // hauteur
// ————
// condition de redimensionnement et dimensions de l image finale
// ————–
// A- LARGEUR ET HAUTEUR maxi fixes
if ($W_max != 0 & ;amp ;amp ;& ;amp ;amp ; $H_max != 0) {
$ratiox = $W_Src / $W_max ; // ratio en largeur
$ratioy = $H_Src / $H_max ; // ratio en hauteur
$ratio = max($ratiox,$ratioy) ; // le plus grand
$W = $W_Src/$ratio ;
$H = $H_Src/$ratio ;
$condition = ($W_Src& ;amp ;gt ;$W) || ($W_Src& ;amp ;gt ;$H) ; // 1 si vrai (true)
}
// ————
// B- HAUTEUR maxi fixe
if ($W_max == 0 & ;amp ;amp ;& ;amp ;amp ; $H_max != 0) {
$H = $H_max ;
$W = $H * ($W_Src / $H_Src) ;
$condition = ($H_Src & ;amp ;gt ; $H_max) ; // 1 si vrai (true)
}
// ———-
// C- LARGEUR maxi fixe
if ($W_max != 0 & ;amp ;amp ;& ;amp ;amp ; $H_max == 0) {
$W = $W_max ;
$H = $W * ($H_Src / $W_Src) ;
$condition = ($W_Src & ;amp ;gt ; $W_max) ; // 1 si vrai (true)
}
// ————-
// REDIMENSIONNEMENT si la condition est vraie
// ————-
// Si l’image Source est plus petite que les dimensions indiquees :
// Par defaut : PAS de redimensionnement.
// Mais on peut "forcer" le redimensionnement en ajoutant ici :
// $condition = 1 ; (risque de perte de qualite)
// ————-
if ($condition == 1) {
// ———-
// creation de la ressource-image "Src" en fonction de l extension
switch($extension) {
case ‘jpg’ :
case ‘jpeg’ :
$Ress_Src = imagecreatefromjpeg($rep_Src.$img_Src) ;
break ;
case ‘png’ :
$Ress_Src = imagecreatefrompng($rep_Src.$img_Src) ;
break ;
}
// ——————
// creation d une ressource-image "Dst" aux dimensions finales
// fond noir (par defaut)
switch($extension) {
case ‘jpg’ :
case ‘jpeg’ :
$Ress_Dst = imagecreatetruecolor($W,$H) ;
break ;
case ‘png’ :
$Ress_Dst = imagecreatetruecolor($W,$H) ;
// fond transparent (pour les png avec transparence)
imagesavealpha($Ress_Dst, true) ;
$trans_color = imagecolorallocatealpha($Ress_Dst, 0, 0, 0, 127) ;
imagefill($Ress_Dst, 0, 0, $trans_color) ;
break ;
}
// ———————
// REDIMENSIONNEMENT (copie, redimensionne, re-echantillonne)
imagecopyresampled($Ress_Dst, $Ress_Src, 0, 0, 0, 0, $W, $H, $W_Src, $H_Src) ;
// ——————
// ENREGISTREMENT dans le repertoire (avec la fonction appropriee)
switch ($extension) {
case ‘jpg’ :
case ‘jpeg’ :
imagejpeg ($Ress_Dst, $rep_Dst.$img_Dst) ;
break ;
case ‘png’ :
imagepng ($Ress_Dst, $rep_Dst.$img_Dst) ;
break ;
}
// ——————-
// liberation des ressources-image
imagedestroy ($Ress_Src) ;
imagedestroy ($Ress_Dst) ;
}
// ———————
}
}
// ————————–
// si le fichier a bien ete cree
if ($condition == 1 & ;amp ;amp ;& ;amp ;amp ; file_exists($rep_Dst.$img_Dst)) { return true ; }
else { return false ; }
}
// retourne : true si le redimensionnement et l enregistrement ont bien eu lieu, sinon false
// ———————–< ;code> ;[/php]
Source : ASP-PHP
Abonnez-vous pour recevoir notre sélection des meilleurs articles directement dans votre boîte mail.
Nous ne partagerons pas votre adresse e-mail.