Comment puis-je afficher une image récupérée en utilisant file_get_contents dans php?Afficher l'image en utilisant file_get_contents
Ai-je besoin de modifier les en-têtes et juste en écho ou quelque chose?
Merci!
Comment puis-je afficher une image récupérée en utilisant file_get_contents dans php?Afficher l'image en utilisant file_get_contents
Ai-je besoin de modifier les en-têtes et juste en écho ou quelque chose?
Merci!
Ai-je besoin de modifier les en-têtes et juste faire écho ou quelque chose?
exactement.
Envoyer un header("content-type: image/your_image_type");
et les données par la suite.
Vous pouvez le faire, ou vous pouvez utiliser la fonction readfile
, qu'il génère pour vous:
header('Content-Type: image/x-png'); //or whatever
readfile('thefile.png');
die();
Edit: Derp, faute de frappe flagrante fixe évidente.
Vous pouvez utiliser readfile et de sortie les en-têtes d'image que vous pouvez obtenir de getimagesize comme ceci:
$remoteImage = "http://www.example.com/gifs/logo.gif";
$imginfo = getimagesize($remoteImage);
header("Content-type: {$imginfo['mime']}");
readfile($remoteImage);
La raison pour laquelle vous devez utiliser est readfile ici qu'il envoie le fichier directement dans la mémoire tampon de sortie où que file_get_contents va lire le fichier dans la mémoire qui est inutile dans ce contenu et potentiellement intensif pour les gros fichiers.
Cette solution est bien meilleure car les en-têtes d'image sont transmis dynamiquement. Bien que j'ai trouvé un problème avec cela: dans ma version de PHP, la troisième ligne (la ligne d'en-tête) n'était pas acceptée. Cela a fonctionné cependant: header ("Content-type:". $ Imginfo ['mime']); – jsleuth
vous pouvez faire comme ceci:
<?php
$file = 'your_images.jpg';
header('Content-Type: image/jpeg');
header('Content-Length: ' . filesize($file));
echo file_get_contents($file);
?>
$image = 'http://images.itracki.com/2011/06/favicon.png';
// Read image path, convert to base64 encoding
$imageData = base64_encode(file_get_contents($image));
// Format the image SRC: data:{mime};base64,{data};
$src = 'data: '.mime_content_type($image).';base64,'.$imageData;
// Echo out a sample image
echo '<img src="' . $src . '">';
Ceci devrait être la réponse acceptée – Kareem
Cela fonctionne pour moi aussi. +1 – valkirilov
Cela fonctionne mais est un peu lent sur les images de 10 Mo. –
Petit à modifier @seengee réponse: Pour travailler, vous avez besoin d'accolades autour de la variable, sinon vous aurez une erreur.
header("Content-type: {$imginfo['mime']}");
bien, et en-tête ("Content-Type: image/jpg"); devrait être suffisant? –
@Belgin s'il s'agit d'une image JPG, oui. –
n'a pas besoin d'image/jpeg? – Rahly