Lorsque vous utilisez la fonction ImageFlip () de PHP, certains développeurs peuvent rencontrer le problème de "non valide" de la fonction: c'est-à-dire que l'image ne semble pas changer après l'appel, ou le programme ne peut pas être exécuté du tout. Dans ce cas, la question la plus courante est:
Cet article analysera les raisons pour lesquelles ImageFlip () peut être invalide sous plusieurs angles et fournir des solutions.
ImageFlip () est une fonction fournie par PHP pour retourner les images horizontalement, verticalement ou en diagonale. Cette fonction a été introduite dans PHP 5.5.0, et sa syntaxe de base est la suivante:
bool imageflip(GdImage $image, int $mode)
où le mode $ peut être l'une des constantes suivantes:
IMG_FLIP_HORIZONTAL - Flip horizontal
IMG_FLIP_VERTICAL - Flip vertical
IMG_FLIP_BOTH - Flip horizontalement et verticalement simultanément (équivalent à une rotation de 180 degrés)
ImageFlip () a été introduit depuis PHP 5.5.0 . Si vous utilisez cette fonction sur une version antérieure (comme PHP 5.3 ou 5.4), vous signalerez directement une erreur ou la fonction n'existe pas du tout.
Solution:
Confirmer la version PHP actuelle:
php -v
Si la version est inférieure à 5,5, veuillez mettre à niveau PHP à plus de 5,5. Il est recommandé d'utiliser PHP 7.x ou 8.x.
ImageFlip () agit essentiellement sur les ressources d'image GD. Par conséquent, si le format d'image ne peut pas être chargé avec succès par ImageCreateFromXxx () , l'opération ImageFlip () suivante sera naturellement invalide.
Erreurs courantes:
Les formats non pris en charge par GD tels que WebP, les HEIC sont utilisés.
Le chemin d'image est mauvais ou les autorisations sont insuffisantes.
La mauvaise fonction a été utilisée pour charger l'image, comme ImageCreateFrommpng () pour JPEG.
Exemple de code (pour les images JPEG):
<?php
$imagePath = 'https://m66.net/images/sample.jpg';
$image = imagecreatefromjpeg($imagePath);
if ($image === false) {
die('Le chargement d'image a échoué,Veuillez confirmer si le format d'image et le chemin sont corrects。');
}
imageflip($image, IMG_FLIP_HORIZONTAL);
// Sortir des images au navigateur
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>
Parfois, ImageFlip () prend en vigueur, mais comme l'image est mise en cache par le navigateur, l'ancienne image est toujours affichée après avoir rafraîchi la page, donnant aux gens l'illusion que "la fonction n'est pas valide".
Solution:
Forcez une actualisation avec des paramètres d'horodatage sur le lien de l'image, tels que: https://m66.net/images/flip.php?t= <? = Time ()?>
Ajoutez des instructions anti-cache à l'en-tête de sortie PHP:
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 1 Jan 2000 00:00:00 GMT");
Pour résumer, les raisons de l'invalidité de la fonction ImageFlip () peuvent inclure la version PHP faible, le format d'image incompatible, le mauvais chemin ou les autorisations, et même l'illusion causée par le cache du navigateur. Pendant le développement, vous pouvez vérifier la version, déboguer la fonction de chargement d'image, ajouter des journaux, etc.
Après s'être assuré que votre environnement de code prend en charge la bibliothèque GD et charge correctement les images, la fonction imageflip () fonctionne généralement correctement. Si vous avez toujours un code incertain, vous pouvez le publier et je vous aiderai à le voir.