Maison >développement back-end >tutoriel php >Comment puis-je optimiser le recadrage d'image en PHP pour les grandes images tout en préservant les proportions ?
Recadrage d'images en PHP : optimisation pour les grandes images et préservation des proportions
L'extrait de code fourni recadre efficacement les images, mais les résultats peuvent se détériorer lorsqu'il est appliqué à des images plus grandes. Pour résoudre ce problème, nous explorerons une approche alternative qui consiste à redimensionner l'image d'origine avant de la recadrer pour obtenir des résultats cohérents et optimaux.
Redimensionnement pour la préservation des proportions
Avant En recadrant une image, il est essentiel de conserver ses proportions pour éviter toute distorsion. Le rapport hauteur/largeur est la proportion entre la largeur de l’image et sa hauteur. En redimensionnant l'image de sorte que le plus petit côté corresponde aux dimensions de recadrage souhaitées, nous pouvons conserver le rapport hauteur/largeur d'origine.
Implémentation du code
Pour mettre en œuvre le redimensionnement et le recadrage de l'image, nous modifierons la partie suivante du code fourni :
<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>
Explication
En suivant cette approche, nous pouvons recadrer efficacement des images plus grandes et préserver les proportions, offrant ainsi des résultats cohérents et de haute qualité.
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!