Maison > développement back-end > tutoriel php > 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
Libérer: 2024-11-05 19:29:02
original
759 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal