使用canvas 生成的图片,是使用dataurl的,php无法直接通过file_put_contents方法保存到本地电脑,需要做一下转码。
图片dataurl 如下
$imgstr = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';
方法一:
通过正则提取出dataurl存储所需的数据,然后直接展示在页面上
1
2
3
4
5
6
7
8
9
10
|
if (!preg_match( '/data:([^;]*);base64,(.*)/' , $imgstr , $matches )) { die ( "error" ); } $content = base64_decode ( $matches [2]); header( 'Content-Type: ' . $matches [1]); header( 'Content-Length: ' . strlen ( $content )); echo $content ; die ; |
方法二:
如果仅仅是想保存图片到本地,可以用substr 和 strpos 方法
1
2
3
|
$imgdata = substr ( $imgstr , strpos ( $imgstr , "," ) + 1); $decodedData = base64_decode ( $imgdata ); file_put_contents ( '11.png' , $decodedData ); |
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!