Création de vignettes mises à l'échelle en PHP
L'extrait de code fourni recadre avec succès une image dans une dimension donnée. Cependant, pour des images plus grandes, il se peut que cela ne produise pas les résultats souhaités. Pour résoudre ce problème, il est nécessaire de redimensionner d'abord l'image, en vous assurant que la plus petite dimension de l'image redimensionnée correspond à la dimension correspondante de la vignette.
Pour créer des vignettes proportionnelles, suivez ces étapes :
Voici un exemple de code mis à jour qui met en œuvre ces étapes :
<code class="php">$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 ) { // If image is wider than thumbnail (in aspect ratio sense) $new_height = $thumb_height; $new_width = $width / ($height / $thumb_height); } else { // If the thumbnail is wider than the image $new_width = $thumb_width; $new_height = $height / ($width / $thumb_width); } $thumb = imagecreatetruecolor( $thumb_width, $thumb_height ); // Resize and crop imagecopyresampled($thumb, $image, 0 - ($new_width - $thumb_width) / 2, // Center the image horizontally 0 - ($new_height - $thumb_height) / 2, // Center the image vertically 0, 0, $new_width, $new_height, $width, $height); imagejpeg($thumb, $filename, 80);</code>
En incorporant le redimensionnement de l'image dans le processus de génération de vignettes, il est possible de créer des vignettes bien proportionnées, indépendantes de 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!