找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 227|回复: 0

[基础] PHP 将dataurl[base64]转成图片image方法总结

  [复制链接]
发表于 2023-2-22 20:46 | 显示全部楼层 |阅读模式

PHP 将dataurl转成图片image方法

使用canvas 生成的图片,是使用dataurl的,其实就是头类型+base64数据体而已,但php无法直接通过file_put_contents方法保存到本地电脑,需要做一下转码。

示例:图片dataurl 如下

$imgstr = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';

 

方法一:

通过正则提取出dataurl存储所需的数据,然后直接展示在页面上

if (!preg_match('/data:([^;]*);base64,(.*)/', $imgstr, $matches)) {
  exit("error");
}
   
$content = base64_decode($matches[2]);
header('Content-Type: '.$matches[1]);
header('Content-Length: '.strlen($content));
   
echo $content;
exit;

 

 

 方法二:

如果仅仅是想保存图片到本地,可以用substr 和 strpos 方法

$imgdata = substr($imgstr,strpos($imgstr,",") + 1);
$decodedData = base64_decode($imgdata);
file_put_contents('11.png',$decodedData );//其实完美一点的做法是把image/xxx图片类型也匹配出来作为图片文件后缀名,示例1已经有了,这里就不做处理,仅仅用于示例演示


总结:关键是将 data:image/png;base64, 特征码识别出来,特征码后面的就可以用file_put_contents保存成图片了。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|学习笔记

GMT+8, 2024-5-18 13:23 , Processed in 0.021159 second(s), 14 queries , APCu On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表