我有问题发送图像作为Javascript和PHP之间的字符串。到目前为止,我有:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAASAQMAAAByySynAAAABlBMVEUAAAD///+l2Z/dAAAAP0lEQVQImWNgPm9gwAAmbM4bH4AQzAdAYiDC/rzxByTi/+f/cIL
作为从JS传递到PHP的字符串,这被验证为图像将在chrome中"原样"加载。
我正在使用PHP来执行
$im = imagecreatefromstring($data);
这只是错误,如果我删除data:image/png;base64位,它工作,但当它涉及到更大的文件,这只是不工作。
我只是在想我可能错过了什么。
您需要删除从canvas.toDataURL("image/png;base64");
你可以用javascript:
var imgData= canvas.toDataURL("image/png;base64");
var postData = {drawing:imgData.substr(22)};
或PHP
substr($_POST['drawing'],22);
我得到了同样的错误,但如果我尝试这个:
echo '<img src="'.$data.'"/>';
然后显示图片…
在shell中这不起作用:
echo 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASAQMAAAByySynAAAABlBMVEUAAAD///+l2Z/dAAAAP0lEQVQImWNgPm9gwAAmbM4bH4AQzAdAYiDC/rzxByTi/+f/cI' | base64 -d - >file.png
I got base64: invalid entry.
如果我添加一个"=":
echo 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASAQMAAAByySynAAAABlBMVEUAAAD///+l2Z/dAAAAP0lEQVQImWNgPm9gwAAmbM4bH4AQzAdAYiDC/rzxByTi/+f/cIL=' | base64 -d - >file.png
那就好了。但是imagecreatefromstring()总是出错。
你能告诉我们你是如何在javascript中获得base64编码的内容吗?
见注释:http://www.php.net/manual/en/function.base64-decode.php#102113
编辑:
<?php
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASAQMAAAByySynAAAABlBMVEUAAAD///+l2Z/dAAAAP0lEQVQImWNgPm9gwAAmbM4bH4AQzAdAYiDC/rzxByTi/+f/cIL';
$data = base64_decode($data);
header('Content-Type: image/png');
echo $data;
?>