好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
如何把base64数据字符串保存为服务器端的PNG图像 关闭 返回上一级  

如何把base64数据字符串保存为服务器端的PNG图像
+ 查看更多

发布日期:2018-03-26 11:17
分类:PHP
浏览次数:89
我使用Nihilogic的“Canvas2Image”JavaScript工具将画布图转换为PNG图像。我现在需要的是使用PHP将这个工具生成的base64字符串转换成服务器上实际的PNG文件。
总之,我现在做的是在客户端使用Canvas2Image生成一个文件,然后重新得到base64编码的数据,并使用AJAX发送到服务器:
// 生成图像文件
var image = Canvas2Image.saveAsPNG(canvas, true);   

image.id = "canvasimage";
canvas.parentNode.replaceChild(image, canvas);

var url = 'hidden.php',
data = $('#canvasimage').attr('src');

$.ajax({ 
    type: "POST", 
    url: url,
    dataType: 'text',
    data: {
        base64data : data
    }
});
此时,“hidden.php”接收到一个像这样的数据块:image / png; base64,iVBORw0KGgoAAAANSUhEUgAABE ...
这个问题把我难倒了。据我所知,我相信我应该使用PHP的imagecreatefromstring函数,但我不知道如何把base64编码的字符串转换成一个实际的PNG图像,并将其存储在我的服务器上。请帮助我!

回答

你需要从该字符串中提取base64图像数据,解码,然后你可以将其保存到磁盘,你不需要GD(图像处理),因为它已经是一个png图像。
$data = 'data:image/png;base64,AAAFBfj42Pj4';

list($type, $data) = explode(';', $data);
list(, $data)      = explode(',', $data);
$data = base64_decode($data);

file_put_contents('/tmp/image.png', $data);
写成一行:
$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data));
上一篇PHP-调试Curl
使curl跟随重定向?下一篇
下一篇使curl跟随重定向?

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2017  苏州卡达网络科技有限公司 好问 GOODQ.TOP 备案号:苏ICP备09008221号-5