从dataURL创建/显示图像

时间:2011-06-20 21:25:01

标签: php image base64

是否可以从POST收到的dataURL创建和显示图片文件? 类似的东西:

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

我无法使用<img>标记来显示它。它需要像一个“普通”的图像文件。

3 个答案:

答案 0 :(得分:6)

是的,试试:

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

编辑:确保你清理你的$ _POST,这样人们就不会插入危险的垃圾......

答案 1 :(得分:4)

如果是你的意见是

// 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;

答案 2 :(得分:1)

您必须在echo之前设置正确的标题。

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