【问题标题】:base64 decoded image from captureVisibleTab. How to save it via GD library to jpg ot png?来自 captureVisibleTab 的 base64 解码图像。如何通过GD库将其保存为jpg ot png?
【发布时间】:2012-01-04 19:33:47
【问题描述】:

我有这段代码可以将图像发送到 test.php:

 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 (data:image/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);
}
?>

结果我收到了这条消息

数据不是可识别的格式

怎么了?

【问题讨论】:

  • 你从哪里得到这条消息,在哪一行?您是否 100% 确定您的图像数据是 base64 编码的?
  • 我想是的,它是 base64 编码的,当我调试第一个 js 代码时,img 变量包含 data:image/jpeg;base64....

标签: php gd


【解决方案1】:

正如您所说,图像看起来像这样:data:image/jpeg;base64,…
所以你应该去掉这个 Data-URL 的第一部分,然后将它直接写入一个文件:

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

【讨论】:

  • 你根本不需要涉及 GD -- 我已经修改了你的 sn-p 以删除不必要的imagecreatefromstring/imagejpeg 往返。
  • @duskwuff,你不能确定给定的内容真的是一张图片。这应该至少经过初步验证。
  • TimWolla,duskwuff 当我尝试打开图片 simpletext.jpg 时出现错误:/
  • 在将img从js发送到php时出现了一些问题,因为当我从js复制img内容并将其像变量一样放入php时一切正常。
  • 那么你应该使用 var_dump 或类似的命令检查你的输入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多