解码base64字符串会产生一个黑色矩形图像

时间:2015-07-29 15:54:24

标签: php canvas

我试图从画布中获取图像并使用我的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.';

1 个答案:

答案 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);

这一行可能会导致此问题,因为数据不会用作数据网址,而是直接保存到文件中。