Recadrage d'images en PHP
Lors du recadrage d'images en PHP, vous pouvez rencontrer des problèmes, notamment lorsqu'il s'agit d'images de grande taille. Une solution consiste à « réduire l’image ».
Dans l'exemple de code donné, l'image est recadrée à une taille fixe (200x150), ce qui peut ne pas convenir à des images plus grandes. Pour obtenir des dimensions d'image cohérentes avant le recadrage, il est recommandé d'utiliser la fonction imagecopyresampled().
La formule suivante peut être utilisée pour générer des vignettes :
$image = imagecreatefromjpeg($_GET['src']); $filename = 'images/cropped_whatever.jpg'; $thumb_width = 200; $thumb_height = 150; $width = imagesx($image); $height = imagesy($image); $original_aspect = $width / $height; $thumb_aspect = $thumb_width / $thumb_height; if ( $original_aspect >= $thumb_aspect ) { // 图像更宽(纵横比意义上) $new_height = $thumb_height; $new_width = $width / ($height / $thumb_height); } else { // 缩略图更宽 $new_width = $thumb_width; $new_height = $height / ($width / $thumb_width); } $thumb = imagecreatetruecolor( $thumb_width, $thumb_height ); // 调整大小并裁剪 imagecopyresampled($thumb, $image, 0 - ($new_width - $thumb_width) / 2, // 水平居中图像 0 - ($new_height - $thumb_height) / 2, // 垂直居中图像 0, 0, $new_width, $new_height, $width, $height); imagejpeg($thumb, $filename, 80);
Ce code prend en compte le rapport hauteur/largeur de l'image, garantissant que l'image redimensionnée a le même rapport hauteur/largeur que la taille de la vignette, évitant ainsi la distorsion. Après redimensionnement et recadrage, il produira une image de taille constante quelle que soit la taille de l'image d'origine.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!