Je crée des vignettes de hauteur fixe et la largeur de mon script PHP en utilisant la fonction suivanteimage redimensionner problème en PHP - GD crée des images redimensionnées laid
/*creates thumbnail of required dimensions*/
function createThumbnailofSize($sourcefilepath,$destdir,$reqwidth,$reqheight,$aspectratio=false)
{
/*
* $sourcefilepath = absolute source file path of jpeg
* $destdir = absolute path of destination directory of thumbnail ending with "/"
*/
$thumbWidth = $reqwidth; /*pixels*/
$filename = split("[/\\]",$sourcefilepath);
$filename = $filename[count($filename)-1];
$thumbnail_path = $destdir.$filename;
$image_file = $sourcefilepath;
$img = imagecreatefromjpeg($image_file);
$width = imagesx($img);
$height = imagesy($img);
// calculate thumbnail size
$new_width = $thumbWidth;
if($aspectratio==true)
{
$new_height = floor($height * ($thumbWidth/$width));
}
else
{
$new_height = $reqheight;
}
// create a new temporary image
$tmp_img = imagecreatetruecolor($new_width, $new_height);
// copy and resize old image into new image
imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// save thumbnail into a file
$returnvalue = imagejpeg($tmp_img,$thumbnail_path);
imagedestroy($img);
return $returnvalue;
}
et j'appeler cette fonction avec les paramètres suivants
createThumbnailofSize($sourcefilepath,$destdir,48,48,false);
mais le problème est que l'image résultante est de très mauvaise qualité, quand j'effectue la même opération avec Adobe Photo Shop, il effectue une bonne conversion .. pourquoi c'est ainsi? Je suis incapable de trouver aucun paramètre de qualité, à travers lequel je change la qualité de l'image de sortie ..
imagecopyresampled() utilise l'algorithme de redimensionnement bi-cubique – Jacco
Merci beaucoup, laissez-moi essayer cette fonction –
Autre point important: Si certaines miniatures sont totalement noires. Le problème peut provenir de certaines caméras et téléphones cellulaires qui ajoutent des caractères supplémentaires. Pour éviter ce problème, ajoutez ceci: 'ini_set (" gd.jpeg_ignore_warning ", 1);'. Ensuite, vous n'obtiendrez que cet avertissement 'Données JPEG corrompues: 2 octets étrangers avant le marqueur 0xd9' mais la vignette sera correctement générée. – Toto