Lorsque vous travaillez avec des vignettes de l'image, nous avons souvent besoin non seulement de réduire la taille de l'image, mais aussi de retourner l'image (comme horizontale ou verticale) pour répondre aux besoins de certains effets visuels. PHP fournit deux fonctions très pratiques: ImageCopyResampled () et imageflip () , qui sont utilisées pour la mise à l'échelle de l'image et le retournement de l'image respectivement. Si vous voulez faire une miniature retournée et de haute qualité, ces deux fonctions fonctionnent parfaitement.
Cette fonction est utilisée pour copier et mettre à l'échelle une partie de l'image à une autre image, prenant en charge le traitement de mise à l'échelle de l'image de haute qualité. Par rapport à ImageCopyResized () , son effet est plus délicat et adapté à la génération de vignettes.
La fonction ImageFlip () est utilisée pour retourner une image, prenant en charge le flip horizontal, vertical et horizontal + vertical en même temps. Cette fonction a été introduite depuis PHP 5.5.
Voici un exemple complet de code qui évolue une image d'origine pour générer une miniature, puis retourne la vignette horizontalement:
<?php
// Chemin d'image d'origine
$sourcePath = 'https://m66.net/uploads/sample.jpg';
// Obtenir des informations d'image
list($width, $height, $type) = getimagesize($sourcePath);
// Créer des ressources d'image
switch ($type) {
case IMAGETYPE_JPEG:
$sourceImage = imagecreatefromjpeg($sourcePath);
break;
case IMAGETYPE_PNG:
$sourceImage = imagecreatefrompng($sourcePath);
break;
case IMAGETYPE_GIF:
$sourceImage = imagecreatefromgif($sourcePath);
break;
default:
die('Types d'images non pris en charge');
}
// Vignette
$newWidth = 150;
$newHeight = intval($height * $newWidth / $width);
// Créer une ressource d'image cible
$thumbImage = imagecreatetruecolor($newWidth, $newHeight);
// Échelle de haute qualité
imagecopyresampled($thumbImage, $sourceImage, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
// Tourner les miniatures(Flip horizontal)
imageflip($thumbImage, IMG_FLIP_HORIZONTAL);
// Sortie vers le navigateur ou enregistrer
header('Content-Type: image/jpeg');
imagejpeg($thumbImage);
// Détruire les ressources
imagedestroy($sourceImage);
imagedestroy($thumbImage);
?>
Avant d'utiliser ImageFlip () , assurez-vous que votre version PHP n'est pas inférieure à 5,5.
Afin de maintenir la proportion d'image, il est recommandé de calculer la taille de la vignette en fonction du rapport d'aspect de l'image d'origine.
Si vous traitez les images PNG, n'oubliez pas de gérer des arrière-plans transparents (comme l'utilisation d' imageAlphable
Cette méthode de traitement est très courante dans les plates-formes de commerce électronique, les galeries, les systèmes de gestion de contenu et d'autres scénarios, en particulier lorsque vous devez générer des aperçus d'images et ajouter des effets visuels (tels que les miroirs), la combinaison de l'imageflip () et de l'image-échantillonnage () peut considérablement améliorer l'efficacité du développement et la qualité de l'image.
Grâce à l'explication de cet article, vous pouvez facilement le saisir