Создать / отобразить изображение из dataURL - PullRequest
6 голосов
/ 21 июня 2011

возможно ли создать и отобразить файл изображения из dataURL, полученного POST? Что-то вроде:

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

Я не могу использовать тег <img> для его отображения. Он должен действовать как «нормальный» файл изображения.

Ответы [ 3 ]

6 голосов
/ 21 июня 2011

Да, попробуйте:

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

Редактировать: убедитесь, что вы очистили свой $ _POST, чтобы люди не вставляли опасный мусор ...

4 голосов
/ 21 июня 2011

Если, например, ваш ввод

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

Тогда вы можете делать то, что вы хотите, с

// 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;
1 голос
/ 21 июня 2011

Вы должны установить правильный заголовок перед эхо.

header( 'Content-Type: image/jpeg' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...