Maison  >  Article  >  développement back-end  >  Comment optimiser le recadrage d'images en PHP pour les grandes images ?

Comment optimiser le recadrage d'images en PHP pour les grandes images ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-04 11:27:02721parcourir

How to Optimize Image Cropping in PHP for Large Images?

Optimisation du recadrage d'images en PHP pour les grandes images

Le code fourni recadre efficacement les images, cependant, il rencontre des limites lorsqu'il s'agit d'images plus grandes. Pour résoudre ce problème, nous devons explorer des techniques permettant de « zoomer » ou de redimensionner les images avant de les recadrer. Cela garantit des résultats cohérents quelle que soit la taille de l'image.

Pour créer des vignettes, la première étape consiste à redimensionner l'image à l'aide de imagecopyresampled(). Déterminez la plus petite dimension de votre image et la dimension correspondante de votre vignette. Par exemple, si votre image mesure 1 280 x 800 px et que la vignette mesure 200 x 150 px, redimensionnez l'image à 240 x 150 px. Cela maintient les proportions de l'image.

Voici une formule généralisée pour créer des vignettes :

<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) {
    // Image wider than thumbnail
    $new_height = $thumb_height;
    $new_width = $width / ($height / $thumb_height);
} else {
    // Thumbnail wider than 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, // Horizontally center the image
    0 - ($new_height - $thumb_height) / 2, // Vertically center the image
    0, 0,
    $new_width, $new_height,
    $width, $height);
imagejpeg($thumb, $filename, 80);</code>

Ce code doit redimensionner et recadrer efficacement les images pour des résultats optimisés.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn