2011-06-20 21 views
6

czy można utworzyć i wyświetlić plik obrazu z danychURL otrzymanych przez POST? Coś jak:Tworzenie/wyświetlanie obrazu z danychURL

<? 
$imgstr = $_POST["imgdata"]; //data:image/png;base64,.... etc (it's always PNG) 
echo base64_decode($imgstr); // idk what this really does 
?> 

Nie mogę korzystać <img> tag, aby go wyświetlić. Musi zachowywać się jak "normalny" plik obrazu.

Odpowiedz

4

Jeśli np. Twój wkład jest

// Red dot graphic, stolen from Wikipedia 
$imgstr = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='; 

Potem możesz robić co chcesz z

// Grab the MIME type and the data with a regex for convenience 
if (!preg_match('/data:([^;]*);base64,(.*)/', $imgstr, $matches)) { 
    die("error"); 
} 

// Decode the data 
$content = base64_decode($matches[2]); 

// Output the correct HTTP headers (may add more if you require them) 
header('Content-Type: '.$matches[1]); 
header('Content-Length: '.strlen($content)); 

// Output the actual image data 
echo $content; 
die; 
6

Tak, spróbuj:

<img alt="Base64 Image" src="data:image/png;base64,{$imgstr}" /> 

Edit: upewnij się oczyścić $ _POST, więc ludzie nie wkładać niebezpiecznych śmieci ...

1

Musisz ustawić prawidłową nagłówek przed echa.

header('Content-Type: image/jpeg');