Génération miniature d'images à l'upload
Posté : 11 avr. 2018, 08:05
Bonjour,
j'ai un code qui me permet de généré lorsque je fais un upload d'image une miniature de 400px de large (ou plus ou moins en fonction).
le code fonctionne bien la miniature est bien créée et enregistrée sur mon serveur mais par contre la qualité de cette miniature est vraiment très très mauvaise ! et donc pas présentable.
Voilà mon code, serait-il possible d’améliorer la qualité de l'image miniature ou de ne pas avoir de perte de qualité ?
j'ai un code qui me permet de généré lorsque je fais un upload d'image une miniature de 400px de large (ou plus ou moins en fonction).
le code fonctionne bien la miniature est bien créée et enregistrée sur mon serveur mais par contre la qualité de cette miniature est vraiment très très mauvaise ! et donc pas présentable.
Voilà mon code, serait-il possible d’améliorer la qualité de l'image miniature ou de ne pas avoir de perte de qualité ?
Code : Tout sélectionner
if(!empty($_FILES))
{
$avatar = $_FILES['avatar'];
$avatar_name = $avatar['name'];
$ext = strtolower(substr(strrchr($avatar_name,'.'),1));
$ext_aut = array('jpg','jpeg','png','gif');
function check_extension($ext,$ext_aut)
{
if(in_array($ext,$ext_aut))
{
return true;
}
}
$valid = (!check_extension($ext,$ext_aut)) ? false : true;
$erreur = (!check_extension($ext,$ext_aut)) ? 'Veuillez charger une image' : '';
if($valid)
{
$max_size = 5000000;
if($avatar['size']>$max_size)
{
$valid = false;
$erreur = 'Fichier trop gros';
}
}
if($valid)
{
if($avatar['error']>0)
{
$valid = false;
$erreur = 'Erreur lors du transfert';
}
}
if($valid)
{
$path_to_image = 'images/fullsize/';
$path_to_min = 'images/min/';
$filename = sha1(uniqid($avatar_name));
$source = $avatar['tmp_name'];
$target = $path_to_image . $filename. '.'. $ext;
move_uploaded_file($source,$target);
if($ext == 'jpg' || $ext == 'jpeg') {$im = imagecreatefromjpeg($path_to_image.$filename.'.'.$ext);}
if($ext == 'png') {$im = imagecreatefrompng($path_to_image.$filename.'.'.$ext);}
if($ext == 'gif') { $im = imagecreatefromgif($path_to_image.$filename.'.'.$ext);}
$ox = imagesx($im);
$oy = imagesy($im);
$nx = 400;
$ny = floor($oy *($nx/$ox));
$nm = imagecreatetruecolor($nx,$ny);
imagecopyresized($nm, $im, 0,0,0,0, $nx,$ny,$ox,$oy);
imagejpeg($nm, $path_to_min.$filename.'.'.$ext);
$nom_image = $filename.'.'.$ext;
$req = $bdd->prepare('INSERT INTO upload(nom) VALUES(:nom)');
$req->execute(array('nom'=>$nom_image));
$req->closeCursor();
$success = 'Upload ok';
}
}