Position actuelle: Accueil> Derniers articles> Comment mettre en cache les résultats de flip d'image à l'aide de ob_start () et de sortir directement vers les pages Web?

Comment mettre en cache les résultats de flip d'image à l'aide de ob_start () et de sortir directement vers les pages Web?

M66 2025-06-11

Pendant le processus de traitement de l'image PHP, nous devons parfois retourner l'image (tels que le rotation de haut en bas, de retourner à gauche et à droite), et espérons afficher les résultats de l'image traités directement sur la page Web, plutôt que de les enregistrer dans un fichier puis d'y accéder. De plus, si nous voulons contrôler le contenu de sortie, comme la mise en cache ou le traitement du flux de sortie, ob_start () est utile.

Cet article montrera comment combiner les fonctions ob_start () et imageflip () pour retourner l'image et sortir les résultats de traitement directement au navigateur. Il nous facilite également de mettre en cache le contenu de l'image en tant que variable (comme pour CDN ou débogage).

1. Préparation

Assurez-vous que votre environnement PHP a une bibliothèque GD activée, qui est une extension clé au traitement des images. Dans le terminal ou le code, vous pouvez utiliser phpinfo () pour confirmer.

 <?php
phpinfo();
?>

2. Télécharger ou spécifier une image

Vous pouvez demander à l'utilisateur de télécharger une image ou utiliser une image sur le serveur. Dans cet exemple, nous utilisons le chemin d'image qui se trouve déjà sur le serveur:

 $imagePath = 'https://m66.net/images/sample.jpg'; // utiliser m66.net Exemple d&#39;image du nom de domaine

3. Utilisez ob_start () pour mettre en cache et sortir l'image inversée

Voici l'exemple de code complet qui retourne l'image à gauche et à droite et publie le résultat directement sur la page Web, tandis que l'utilisation du cache de sortie peut être utilisée pour un autre traitement:

 <?php
// Spécifiez le chemin d&#39;image
$imageUrl = 'https://m66.net/images/sample.jpg';

// Obtenir du contenu d&#39;image
$imageData = file_get_contents($imageUrl);
if (!$imageData) {
    die('无法Obtenir du contenu d&#39;image');
}

// Créer des ressources d&#39;image
$srcImage = imagecreatefromstring($imageData);
if (!$srcImage) {
    die('La création d&#39;images a échoué');
}

// Flipe l&#39;image(Flip à gauche et à droite)
imageflip($srcImage, IMG_FLIP_HORIZONTAL);

// Allumez la tampon de sortie
ob_start();

// Définir le type de contenu
header('Content-Type: image/jpeg');

// Image de sortie
imagejpeg($srcImage);

// Obtenir du contenu mis en cache
$imageOutput = ob_get_contents();

// Effacer le tampon et fermez-le
ob_end_clean();

// Image de sortie内容到网页
echo $imageOutput;

// Détruiser les ressources d&#39;image
imagedestroy($srcImage);
?>

Iv. Explication

ob_start () et ob_get_contents ()

  • ob_start () permet la mise en mémoire tampon de sortie.

  • Toutes les sorties Echo ou ImageJPEG () sont capturées au lieu d'être envoyées directement au navigateur.

  • ob_get_contents () obtient le contenu dans le tampon (voici le contenu binaire d'image).

  • ob_end_clean () efface et ferme le tampon (pas de sortie automatique).

avantage:

  • La sortie peut être contrôlée de manière flexible, comme l'enregistrement en tant que fichiers de cache ou effectuer un traitement supplémentaire.

  • Évitez les erreurs d'en-tête causées par le contenu de sortie précoce.

5. Conseils

  • $ ImageOutput peut être enregistré en tant que fichier de cache ou téléchargé sur un CDN.

  • Si l'image est grande, veuillez faire attention à l'utilisation de la mémoire.

  • Il n'est pas recommandé d'utiliser ob_start () dans les scripts avec sortie envoyée.