2011-12-28 77 views
6

我有問題發送圖像作爲Javascript和PHP之間的字符串。到目前爲止,我有:imagecreatefromstring問題與字符串傳遞從javascript

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

作爲正在從JS到PHP傳遞的字符串,這個被驗證爲圖像將在Chrome加載「原樣」。

我使用PHP來然後

$im = imagecreatefromstring($data); 

然而,這只是錯誤的,如果我刪除的數據:圖像/ PNG; BASE64位,它的工作原理,但是當涉及到較大的文件,這少了點工作。

我只是想知道我可能錯過了這裏。

+1

你記得['BASE64_DECODE()'](http://php.net/manual/ en/function.base64-decode.php)將數據傳遞給'imagecreatefromstring()' – DaveRandom 2011-12-28 01:15:34

+0

我試過了,但根本沒有用。它適用於只是路過 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASAQMAAAByySynAAAABlBMVEUAAAD /// + l2Z/dAAAAP0lEQVQImWNgPm9gwAAmbM4bH4AQzAdAYiDC/rzxByTi/+ F/cIL' – 2011-12-28 01:17:30

+0

@ChristopherBuckley:你在撒謊(或此處未粘貼正確的數據)。只是通過該字符串將得到您:警告:imagecreatefromstring()[function.imagecreatefromstring]:數據在第6行上的/ code/Bce4M2中未被識別格式 發生錯誤。 - 請參閱http://codepad.viper-7.com/Bce4M2 – hakre 2011-12-28 01:53:41

回答

0

我得到了同樣的錯誤,但如果我試試這個:

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

然後會顯示圖片...

到殼中,這並不工作:

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

我得到了base64:無效的條目

如果我添加一個 「=」:

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

然後,它是好的。但alwas與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; 
?> 
1

您需要刪除從canvas.toDataURL吐出來(頭「圖像/ PNG; BASE64" );

您可以用JavaScript做到這一點:

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

或PHP

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