2010-11-26 6 views

Répondre

27

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.

+0

bien, et en-tête ("Content-Type: image/jpg"); devrait être suffisant? –

+0

@Belgin s'il s'agit d'une image JPG, oui. –

+3

n'a pas besoin d'image/jpeg? – Rahly

9

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.

55

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.

+6

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

7

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); 
?> 
26
$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 . '">'; 
+0

Ceci devrait être la réponse acceptée – Kareem

+0

Cela fonctionne pour moi aussi. +1 – valkirilov

+0

Cela fonctionne mais est un peu lent sur les images de 10 Mo. –

0

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']}");

Questions connexes