2012-01-04 78 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

相关问题