如何从base 64数据字符串保存png映像服务器端我正在使用Nihilogic的“Canvas2Image”JavaScript工具将画布绘图转换为PNG图像。我现在需要的是使用PHP将这个工具生成的base 64字符串转换为服务器上的实际PNG文件。简而言之,我目前正在做的是使用Canvas2Image在客户端生成一个文件,然后检索Base 64编码的数据并使用Ajax将其发送到服务器:// Generate the image filevar 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”接收的数据块如下所示资料来源:PNG;BASE 64,iVBO卢旺达0KGgoAAAANSUHEUAABE.从现在开始,我很困惑。据我所读,我认为我应该使用PHP镜像字符串函数,但我不知道如何从Base 64编码的字符串创建实际的PNG映像并将其存储在我的服务器上。请帮忙!
3 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
$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));
if (preg_match('/^data:image\/(\w+);base64,/', $data, $type)) { $data = substr($data, strpos($data, ',') + 1); $type = strtolower($type[1]); // jpg, png, gif if (!in_array($type, [ 'jpg', 'jpeg', 'gif', 'png' ])) { throw new \Exception('invalid image type'); } $data = base64_decode($data); if ($data === false) { throw new \Exception('base64_decode failed'); }} else { throw new \Exception('did not match data URI with image data');}file_put_contents("img.{$type}", $data);
一只甜甜圈
TA贡献1836条经验 获得超5个赞
str_replace(' ', '+', $img);
$img = $_POST['img']; // Your data 'data:image/png;base64,AAAFBfj42Pj4';$img = str_replace('data:image/png;base64,', '', $img); $img = str_replace(' ', '+', $img);$data = base64_decode($img);file_put_contents('/tmp/image.png', $data);
添加回答
举报
0/150
提交
取消