J'utilise imagecopyresampled pour créer des vignettes basées sur une certaine largeur et hauteur. Le problème que j'ai est que leur taille est écrasée. Ce que je veux, c'est que toutes les images miniatures soient en 140x84 et que leur rapport d'aspect ne corresponde pas au fait que les parties supérieures et inférieures de l'image soient recadrées au centre.Imagecopyresampled Auto-Crop Image
Voici ce que j'ai jusqu'à présent, toutes les idées seraient grandement appréciées.
// Create Thumbnail
$imgsize = getimagesize($targetFile);
switch(strtolower(substr($targetFile, -3))){
case "jpg":
$image = imagecreatefromjpeg($targetFile);
break;
case "png":
$image = imagecreatefrompng($targetFile);
break;
case "gif":
$image = imagecreatefromgif($targetFile);
break;
default:
exit;
break;
}
$width = 140; //New width of image
$height = $imgsize[1]/$imgsize[0]*$width; //This maintains proportions
$x_mid = $width/2; //horizontal middle
$y_mid = $height/2; //vertical middle
$src_w = $imgsize[0];
$src_h = $imgsize[1];
$picture = imagecreatetruecolor($width, $height);
imagealphablending($picture, false);
imagesavealpha($picture, true);
$bool = imagecopyresampled($picture, $image, 0, 0, 0, ($y_mid-(84/2)), $width, $height, $src_w, $src_h);
if($bool){
switch(strtolower(substr($targetFile, -3))){
case "jpg":
header("Content-Type: image/jpeg");
$bool2 = imagejpeg($picture,$file_dir."/thumbs/".$imageName,85);
break;
case "png":
header("Content-Type: image/png");
imagepng($picture,$file_dir."/thumbs/".$imageName);
break;
case "gif":
header("Content-Type: image/gif");
imagegif($picture,$file_dir."/thumbs/".$imageName);
break;
}
}
imagedestroy($picture);
imagedestroy($image);
Voir la réponse automatique à cette question: [Image de recadrage PHP pour fixer la largeur et la hauteur sans perdre le ratio] (http://stackoverflow.com/questions/3255773/php-crop-image-to-fix-width- et-hauteur-sans-perdre-dimension-ratio/3255906 # 3255906) – Mike
Merci Mike, la réponse de Sven sur cette page a parfaitement fonctionné! – Paul