2012-01-04 27 views
0

我有這樣的代碼,其發送圖像到test.php的:來自captureVisibleTab的base64解碼圖像。如何通過GD庫將其保存到jpg或png?

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.captureVisibleTab(null, function(img) { 

    $.ajax({ 
    type: "POST", 
    url: "http://imap24.pl/tests/dom/testy/test.php", 
    data: "img=" + img, 
    success: function(e){ 
    alert(e); 
    }}); 


    }); 
}); 

的IMG是BASE64(數據:圖像/ JPEG; BASE64,/ 9J/4AAQSkZ ...)。我有test.php的

<?php 
if (isset($_POST['img'])) { 
$img = $_POST['img']; 
$data = base64_decode($img); 
$im = imagecreatefromstring($data); 
imagejpeg($im, 'simpletext.jpg'); 
imagedestroy($im); 
} 
?> 

此腳本,並作爲結果我可識別的格式

什麼問題得到這個消息

的數據是不是?

+0

你從哪裏得到這個消息,在哪一行?你是否100%確定你的圖像數據是base64編碼的? – 2012-01-04 19:35:23

+0

我認爲taht是的,它是base64編碼,當我調試第一個js代碼img變量包含數據:image/jpeg; base64 .... – 2012-01-05 06:53:50

回答

1

正如你所說的圖像看起來像這樣:data:image/jpeg;base64,…
所以,你應該剝離這種數據URL的第一部分,然後將其直接寫入到文件:

$comma = strpos($img, ','); 
$data = base64_decode(substr($img, $comma+1)); 
file_put_contents("simpletext.jpg", $data); 
+0

你根本不需要涉及GD - 我已經將你的代碼片段修改爲刪除不必要的'imagecreatefromstring' /'imagejpeg'往返。 – duskwuff 2012-01-04 19:52:25

+0

@duskwuff,你不能確定,給定的內容真的是一個圖像。這應該是在初步驗證。 – TimWolla 2012-01-04 20:03:38

+0

TimWolla,duskwuff當我嘗試打開圖像時出現錯誤simpletext.jpg:/ – 2012-01-05 06:43:58

相關問題