发布日期:2018-03-26
如何把base64数据字符串保存为服务器端的PNG图像+ 查看更多
如何把base64数据字符串保存为服务器端的PNG图像
+ 查看更多
发布日期:2018-03-26 11:17
分类:PHP
浏览次数:172
我使用Nihilogic的“Canvas2Image”JavaScript工具将画布图转换为PNG图像。我现在需要的是使用PHP将这个工具生成的base64字符串转换成服务器上实际的PNG文件。
总之,我现在做的是在客户端使用Canvas2Image生成一个文件,然后重新得到base64编码的数据,并使用AJAX发送到服务器:
总之,我现在做的是在客户端使用Canvas2Image生成一个文件,然后重新得到base64编码的数据,并使用AJAX发送到服务器:
// 生成图像文件 var image = Canvas2Image.saveAsPNG(canvas, true); image.id = "canvasimage"; canvas.parentNode.replaceChild(image, canvas); var url = 'hidden.php', data = $('#canvasimage').attr('src'); $.ajax({ type: "POST", url: url, dataType: 'text', data: { base64data : data } });
此时,“hidden.php”接收到一个像这样的数据块:image / png; base64,iVBORw0KGgoAAAANSUhEUgAABE ...
这个问题把我难倒了。据我所知,我相信我应该使用PHP的imagecreatefromstring函数,但我不知道如何把base64编码的字符串转换成一个实际的PNG图像,并将其存储在我的服务器上。请帮助我!
这个问题把我难倒了。据我所知,我相信我应该使用PHP的imagecreatefromstring函数,但我不知道如何把base64编码的字符串转换成一个实际的PNG图像,并将其存储在我的服务器上。请帮助我!
回答
你需要从该字符串中提取base64图像数据,解码,然后你可以将其保存到磁盘,你不需要GD(图像处理),因为它已经是一个png图像。
$data = 'data:image/png;base64,AAAFBfj42Pj4'; list($type, $data) = explode(';', $data); list(, $data) = explode(',', $data); $data = base64_decode($data); file_put_contents('/tmp/image.png', $data);写成一行:
$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data));