imagecreatefromstring问题从javascript传递的字符串

时间:2011-12-28 01:12:21

标签: php javascript

我在将图像作为字符串在Javascript和PHP之间发送时遇到问题。到目前为止,我有:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAASAQMAAAByySynAAAABlBMVEUAAAD///+l2Z/dAAAAP0lEQVQImWNgPm9gwAAmbM4bH4AQzAdAYiDC/rzxByTi/+f/cIL

作为从JS传递到PHP的字符串,这将被验证,因为图像将以“原样”加载到chrome中。

我正在使用PHP

$im = imagecreatefromstring($data);

这只是错误,如果我删除数据:image / png; base64位,它可以工作,但是当涉及到较大的文件时,这只是不起作用。

我只是想知道我在这里错过了什么。

2 个答案:

答案 0 :(得分:1)

你需要删除canvas.toDataURL(“image / png; base64”)中吐出的标题;

你可以用javascript:

来做
var imgData= canvas.toDataURL("image/png;base64");
var postData = {drawing:imgData.substr(22)};

或使用php

substr($_POST['drawing'],22);

答案 1 :(得分:0)

我得到了同样的错误,但如果我试试这个:

echo '<img src="'.$data.'"/>';

然后显示图片......

进入shell时,这不起作用:

echo 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASAQMAAAByySynAAAABlBMVEUAAAD///+l2Z/dAAAAP0lEQVQImWNgPm9gwAAmbM4bH4AQzAdAYiDC/rzxByTi/+f/cI' | base64 -d - >file.png

我有 base64:无效条目

如果我添加“=”:

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;
?>