Rogner des photos en PHP !
floflo55
Messages postés
221
Date d'inscription
Statut
Membre
Dernière intervention
-
Nhay Messages postés 838 Date d'inscription Statut Membre Dernière intervention -
Nhay Messages postés 838 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai un petit problème,
Il y a des personnes qui upload des photos sur un site web, mais le format de ces photos est très variable, hors je voudrais que ces photos soit carrées. J'aurais donc besoin d'un code PHP qui modifie les photos en rognant les parties en trop, comme sur l'image suivante:
http://image.noelshack.com/fichiers/2014/23/1401904703-image35.png
On imagine que la photo se trouve à l'adresse http://siteweb.com/temp/123.png (c'est un exemple)
Si au passage le script pouvait baisser la qualité des images pour éviter qu'elles soit trop lourdes ça serait vraiment super ^^
Si je demande ce code c'est que je n'ai pas la moindre idée de comment le faire en PHP !
Un très grand merci d'avance ;-)
J'ai un petit problème,
Il y a des personnes qui upload des photos sur un site web, mais le format de ces photos est très variable, hors je voudrais que ces photos soit carrées. J'aurais donc besoin d'un code PHP qui modifie les photos en rognant les parties en trop, comme sur l'image suivante:
http://image.noelshack.com/fichiers/2014/23/1401904703-image35.png
On imagine que la photo se trouve à l'adresse http://siteweb.com/temp/123.png (c'est un exemple)
Si au passage le script pouvait baisser la qualité des images pour éviter qu'elles soit trop lourdes ça serait vraiment super ^^
Si je demande ce code c'est que je n'ai pas la moindre idée de comment le faire en PHP !
Un très grand merci d'avance ;-)
A voir également:
- Rogner des photos en PHP !
- Partager des photos - Guide
- Toutes mes photos - Guide
- Google photos - Télécharger - Albums photo
- Easy php - Télécharger - Divers Web & Internet
- Doublons photos - Guide
4 réponses
Regarde ici:
http://stackoverflow.com/questions/14799311/resize-and-crop-image-into-square-with-white-background-using-gd
http://stackoverflow.com/questions/14799311/resize-and-crop-image-into-square-with-white-background-using-gd
Bonjour,
tout d'abord tu peux utiliser la prog en poo en php !
tu aura besoin d' :
un fichier class en php (la poo),
un formulaire,
du php procédural sera nécessaire,
un dossier pour déplacer les images grandeur nature,
un autre pour les images crops !
tout d'abord créer un fichier : lenomClass.php
et colle ceci :
le code pour redimensionner :
<?php
class Img {
static public function creerMin($img,$chemin,$nom,$mlargeur=100,$mhauteur=100) {
$nom = substr($nom,0,-4);
$dimension = getimagesize($img);
if(substr(strtolower($img),-4)==".jpg") {
$image = imagecreatefromjpeg($img);
}
else if(substr(strtolower($img),-4)==".png") {
$image = imagecreatefrompng($img);
}
else if(substr(strtolower($img),-4)==".gif") {
$image = imagecreatefromgif($img);
}
else {
return false;
}
$miniature = imagecreatetruecolor($mlargeur,$mhauteur);
if($dimension[0]>($mlargeur/$mhauteur)*$dimension[1]) {
$dimY = $mhauteur;
$dimX = $mhauteur*$dimension[0]/$dimension[1];
$decalX = -($dimX-$mlargeur)/2;
$decalY = 0;
}
if($dimension[0]<($mlargeur/$mhauteur)*$dimension[1]) {
$dimX = $mlargeur;
$dimY = $mlargeur*$dimension[1]/$dimension[0];
$decalY = -($dimY-$mhauteur)/2;
$decalX=0;
}
if($dimension[0]==($mlargeur/$mhauteur)*$dimension[1]) {
$dimX = $mlargeur;
$dimY = $mhauteur;
$decalX = 0;
$decalY = 0;
}
imagecopyresampled($miniature, $image, $decalX, $decalY, 0, 0, $dimX, $dimY, $dimension[0], $dimension[1]);
imagejpeg($miniature, $chemin . "/" . $nom . ".jpg", 90);
return true;
}
}
Ensuite créer un dossier : "galerie" par exemple et à l'intérieur de ce dossier créer un dossier miniature (par exemple tu peux les nommer autrement (se sont mes conventions à moi)).
il faut une page php pour inclure ton formulaire et charger ta class php :
page en php :
<?php
if (!empty($_FILES)) {
require_once "Lefichierclass.php";
if(isset($_FILES['img']) && !empty($_FILES['img'])) {
$ds = DIRECTORY_SEPARATOR; //les slash antislash
$cd = __DIR__ . $ds; //les directory ex : ../
$img = $_FILES['img'];
$extensions = strtolower(substr($img['name'] , -3));
$allowedExtensions = ["jpg" , 'png' , 'gif' , 'jpeg']; // les extensions permisent !
if (in_array($extensions , $allowedExtensions)) {
move_uploaded_file($img['tmp_name'], $cd . ".." . $ds . "" . $ds . $img['name']); // /!\ ici on récupère que 'name' et non tmp_name
if(!Img::creerMin($cd . ".." . $ds . "tondossierpourplacerlimageréel" . $ds . $img['name'], $cd . ".." . $ds . "tondossierpourplacerlimageréel" . $ds . "le dossier des miniatures", $img['name'] , 400, 224)) {
// Sur la ligne du dessus on appel la classe creerMin et à la fin on redimensionne l'immage par les tailles vouluent !
$erreur = "Erreur interne. Veuillez réessayer. Si le problème persiste veuillez contacter un administrateur.";
}
}
else {
$erreur = "Votre fichier n'est pas une image ! Les extensions permisent sont : png, jpg et gif ! Réessayer ou contactez un administrateur si l'erreur persiste !";
}
}
}
?><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<link rel="stylesheet" href="css/style.css">
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<?php
if (isset($erreur)) {
echo "$erreur";
}
?> //indiquer une erreur si il y en a une
<form method="post" action="pourmoicettememepage.php" enctype="multipart/form-data">
<input type="file" name="img">
<input type="submit" value="envoyer">
</form>
<?php
$dossier = "../galerie/miniature";
$dir = opendir($dossier);
while ($file = readdir($dir)) {
$allowedExtensions = array("jpg" , 'png' , 'gif' , 'jpeg');
$extensions = strtolower(substr($file, -3 ));
if (in_array($extensions , $allowedExtensions)) {
?>
<img src="../le dossier image réel/le dossier image miniature/<?php echo $file; //les images ?>" />
<?php
}
}
?> //afficher les images miniaturisées
</body>
</html>
tout d'abord tu peux utiliser la prog en poo en php !
tu aura besoin d' :
un fichier class en php (la poo),
un formulaire,
du php procédural sera nécessaire,
un dossier pour déplacer les images grandeur nature,
un autre pour les images crops !
tout d'abord créer un fichier : lenomClass.php
et colle ceci :
le code pour redimensionner :
<?php
class Img {
static public function creerMin($img,$chemin,$nom,$mlargeur=100,$mhauteur=100) {
$nom = substr($nom,0,-4);
$dimension = getimagesize($img);
if(substr(strtolower($img),-4)==".jpg") {
$image = imagecreatefromjpeg($img);
}
else if(substr(strtolower($img),-4)==".png") {
$image = imagecreatefrompng($img);
}
else if(substr(strtolower($img),-4)==".gif") {
$image = imagecreatefromgif($img);
}
else {
return false;
}
$miniature = imagecreatetruecolor($mlargeur,$mhauteur);
if($dimension[0]>($mlargeur/$mhauteur)*$dimension[1]) {
$dimY = $mhauteur;
$dimX = $mhauteur*$dimension[0]/$dimension[1];
$decalX = -($dimX-$mlargeur)/2;
$decalY = 0;
}
if($dimension[0]<($mlargeur/$mhauteur)*$dimension[1]) {
$dimX = $mlargeur;
$dimY = $mlargeur*$dimension[1]/$dimension[0];
$decalY = -($dimY-$mhauteur)/2;
$decalX=0;
}
if($dimension[0]==($mlargeur/$mhauteur)*$dimension[1]) {
$dimX = $mlargeur;
$dimY = $mhauteur;
$decalX = 0;
$decalY = 0;
}
imagecopyresampled($miniature, $image, $decalX, $decalY, 0, 0, $dimX, $dimY, $dimension[0], $dimension[1]);
imagejpeg($miniature, $chemin . "/" . $nom . ".jpg", 90);
return true;
}
}
Ensuite créer un dossier : "galerie" par exemple et à l'intérieur de ce dossier créer un dossier miniature (par exemple tu peux les nommer autrement (se sont mes conventions à moi)).
il faut une page php pour inclure ton formulaire et charger ta class php :
page en php :
<?php
if (!empty($_FILES)) {
require_once "Lefichierclass.php";
if(isset($_FILES['img']) && !empty($_FILES['img'])) {
$ds = DIRECTORY_SEPARATOR; //les slash antislash
$cd = __DIR__ . $ds; //les directory ex : ../
$img = $_FILES['img'];
$extensions = strtolower(substr($img['name'] , -3));
$allowedExtensions = ["jpg" , 'png' , 'gif' , 'jpeg']; // les extensions permisent !
if (in_array($extensions , $allowedExtensions)) {
move_uploaded_file($img['tmp_name'], $cd . ".." . $ds . "" . $ds . $img['name']); // /!\ ici on récupère que 'name' et non tmp_name
if(!Img::creerMin($cd . ".." . $ds . "tondossierpourplacerlimageréel" . $ds . $img['name'], $cd . ".." . $ds . "tondossierpourplacerlimageréel" . $ds . "le dossier des miniatures", $img['name'] , 400, 224)) {
// Sur la ligne du dessus on appel la classe creerMin et à la fin on redimensionne l'immage par les tailles vouluent !
$erreur = "Erreur interne. Veuillez réessayer. Si le problème persiste veuillez contacter un administrateur.";
}
}
else {
$erreur = "Votre fichier n'est pas une image ! Les extensions permisent sont : png, jpg et gif ! Réessayer ou contactez un administrateur si l'erreur persiste !";
}
}
}
?><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<link rel="stylesheet" href="css/style.css">
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<?php
if (isset($erreur)) {
echo "$erreur";
}
?> //indiquer une erreur si il y en a une
<form method="post" action="pourmoicettememepage.php" enctype="multipart/form-data">
<input type="file" name="img">
<input type="submit" value="envoyer">
</form>
<?php
$dossier = "../galerie/miniature";
$dir = opendir($dossier);
while ($file = readdir($dir)) {
$allowedExtensions = array("jpg" , 'png' , 'gif' , 'jpeg');
$extensions = strtolower(substr($file, -3 ));
if (in_array($extensions , $allowedExtensions)) {
?>
<img src="../le dossier image réel/le dossier image miniature/<?php echo $file; //les images ?>" />
<?php
}
}
?> //afficher les images miniaturisées
</body>
</html>
Pas testé mais ça devrait marcher.
PS: Je crois que j'ai trouvé la liste des extensions php que j'ai actuellement:
Archive_Tar 1.3.11
Cache_Lite 1.7.15
Config 1.10.12
Console_Getopt 1.3.1
DB 1.7.14
DB_DataObject 1.11.2
DB_NestedSet 1.4.1
Date 1.4.7
File 1.4.1
File_CSV
File_Util
HTML_AJAX
HTML_Common 1.2.5
HTML_Common2
HTML_Javascript
HTML_QuickForm
HTML_QuickForm2
HTML_QuickForm_Controller 1.0.10
HTML_Template_Flexy 1.3.12
Image_Text 0.7.0
Log 1.12.7
MDB2 2.5.0b5
MDB2_Driver_mysql 1.4.1
Mail 1.2.0
Mail_Mime 1.8.8
Math_BigInteger 1.0.2
Net_DNS 1.0.7
Net_DNS2 1.3.2
Net_SMTP 1.6.2
Net_Socket 1.0.14
Net_URL 1.0.15
Net_URL2 2.0.5
Net_UserAgent_Detect 2.5.2
Numbers_Words 0.16.4
PEAR 1.9.4
Pager 2.4.8
RVSeagullMod 1.0.1
Structures_Graph 1.0.4
Text_CAPTCHA 0.5.0
Text_Figlet 1.0.2
Text_Password 1.1.1
Translation2 2.0.4
Validate 0.8.5
XML_Parser 1.3.4
XML_RPC 1.5.5
XML_Util 1.2.1
Sur quel genre de serveur est hébergé ton site ?