使用canvas 生成的图片,是使用dataurl的,php无法直接通过file_put_contents方法保存到本地电脑,需要做一下转码。
图片dataurl 如下
$imgstr
=
‘data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==‘
;
方法一:
通过正则提取出dataurl存储所需的数据,然后直接展示在页面上
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 方法
$imgdata
=
substr
(
$imgstr
,
strpos
(
$imgstr
,
","
) + 1);
$decodedData
=
base64_decode
(
$imgdata
);
file_put_contents
(
‘11.png‘
,
$decodedData
);
时间: 2024-11-06 22:30:07