Imagecreatefromstring从javascript传入的字符串问题


imagecreatefromstring issues with string passed from javascript

我有问题发送图像作为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;
?>