Bonjour, j'ai utiliser la class fournit dans le tuto de la galerie d'image en php car j'avais, et je peux le dire, la flemme de le faire moi même.
Cependant je remarque que quand on upload un fichier .png ( je n'ai pas essayé avec .gif ) quand la miniature se fait, l'image est toute noir, j'aimerai savoir si vous saviez d'ou ça vient.
Code php
move_uploaded_file($avatar'tmp_name'], 'img/avatar/'.$avatar'name']);
Img::creerMin('img/avatar/'.$avatar'name'], "img/avatar/",$username,130,130);
unlink('img/avatar/'.$avatar'name']);
Alors ce que je veux faire ( et ça marche ) c'est uqe ça créer la miniature et ça supprime l'image de base, cependant je remarque le problème cité plus haut qui est bien embetant.
imgClass.php :
<?php
class Img{
static function creerMin($img,$chemin,$nom,$mlargeur=100,$mhauteur=100){
// On supprime l'extension du nom
// On récupère les dimensions de l'image
$dimension=getimagesize($img);
// On cré une image à partir du fichier récup
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); }
// L'image ne peut etre redimensionne
else{return false; }
// Création des miniatures
// On cré une image vide de la largeur et hauteur voulue
$miniature =imagecreatetruecolor ($mlargeur,$mhauteur);
// On va gérer la position et le redimensionnement de la grande image
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;}
// on modifie l'image crée en y plaçant la grande image redimensionné et décalée
imagecopyresampled($miniature,$image,$decalX,$decalY,0,0,$dimX,$dimY,$dimension[0],$dimension[1]);
// On sauvegarde le tout
imagejpeg($miniature,$chemin."/".$nom.".jpg",90);
return true;
}
}
?>
J'ai supprimé le bout de code : $nom = substr($nom,0,-4); car il supprimait un bout de l'username mais pas l'extension, ça peut venir de là, je pense que ça vient de là et du coup c'est pas la class qui merde mais mon PHP, ce qui serait plus logique.
Merci à vous.
Ok, c'est résolu, j'avais juste mis un poids max et mes images .png étaient beaucoup trop grosses. :)
C'est fou, je cherchai tellement compliqué...
Bonjour,
$avatar'tmp_name']
D'où sors tu cette variable ?
Est ce que ton formulaire ressemble à ceci :
<input type="file" name="avatar">
Si oui, c'est normal que tu es quelques problèmes (ou si non, montre nous ton code entier )
Salut Benjamin Derepas , je sors la variable d'ici :
$avatar = $_FILES'avatar'];
Et oui mon input ressemble plus ou moins à ça.
Et je peux tout à fait uploader une image jpg, aucun problème l'image se crop et est visible.