我试图从画布中获取图像并使用我的php脚本保存它。但是当脚本出现时,我得到了一个简单的黑色矩形而不是我的画布图像(网络摄像头快照)。 这是我的代码:
$img = $base64Img;
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = "photo/" . uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
答案 0 :(得分:0)
这一行的目的是什么:
$img = str_replace(' ', '+', $img);
不要认为有必要。 否则一切似乎都很好。
我通常使用php explode
来隔离数据:
$exploded = explode(',', $img);
$base64 = $exploded[1];
$data = base64_decode($base64);
但str_replace
也应该做好。
可能错误出在加载图像的代码中?
该行的目的是编码base64数据中的空格。
this comment on php.net中也提到了这一点。
在这种情况下,最好使用PHP函数urlencode
。
$data = base64_decode($data);
这一行可能会导致此问题,因为数据不会用作数据网址,而是直接保存到文件中。