Maison  >  Article  >  développement back-end  >  Comment créer des vignettes proportionnelles en PHP pour de grandes images ?

Comment créer des vignettes proportionnelles en PHP pour de grandes images ?

DDD
DDDoriginal
2024-11-05 19:29:02683parcourir

How to Create Proportional Thumbnails in PHP for Large Images?

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 :

  1. Déterminez les proportions de l'image source et de la vignette souhaitée.
  2. Comparez les proportions. Si l'image source est plus large, calculez la nouvelle hauteur et la nouvelle largeur en conséquence. À l'inverse, si la vignette est plus large, calculez la nouvelle largeur et hauteur.
  3. Créez une nouvelle image avec les dimensions calculées.
  4. Effectuez une opération de rééchantillonnage pour redimensionner l'image source pour l'adapter aux nouvelles dimensions. tout en conservant les proportions.
  5. Recadrez l'image redimensionnée aux dimensions de la vignette spécifiées.
  6. Enregistrez l'image recadrée en tant que vignette.

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!

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