【问题标题】:Small file to QR Code小文件转二维码
【发布时间】:2011-12-13 22:57:21
【问题描述】:

我基本上是在尝试使用 Google 的 QR Code API 从字节数组中创建 QR 码。我已经尝试通过谷歌的网络后端为“chl”变量(二维码的数据)传递一个字节数组,但它似乎从来不喜欢它。我使用 Google 的 PHP 示例作为我的代码的基础,但如果有人知道使用 Google 的 API 将字节数组简单地转换为 QR 码的另一种方法,那就是唯一的目标。

<?php
// Create some random text-encoded data for a QR code.
//header('content-type: image/png');    
$url = 'https://chart.googleapis.com/chart?chid=' . md5(uniqid(rand(), true));
$chd = file($_FILES["file"]["tmp_name"]);

// Add image type, image size, and data to params.
$qrcode = array(
'cht' => 'qr',
'chs' => '300x300',
'choe' => 'ISO-8859-1',
'chl' => $chd);


// Send the request, and print out the returned bytes.
$context = stream_context_create(
array('http' => array(
  'method' => 'POST',
  'content' => http_build_query($qrcode))));
fpassthru(fopen($url, 'r', false, $context));
?>

有 PHP,处理上传的文件并通过字节数组发送到 Google 的 API。

【问题讨论】:

  • 请向我们展示您尝试过的代码。
  • 您可以尝试将数据转换为十六进制。
  • 添加了一些 PHP 尝试从上传的文件发送字节数组。

标签: php google-api qr-code


【解决方案1】:

file() 函数给出了一个字符串数组,在新行上分割。我想你只想要一个字符串。见file_get_contents()

确保

echo http_build_query($qrcode);

帮助您调试。

【讨论】:

  • echo http_build_query($qrcode); 这行得通,并且查询看起来应该可以正常工作。它完全按照应有的方式将文件作为字节数组发送,查询看起来不错。我现在的问题是它返回原始文本中的 PNG 而没有更改标题。当我取消注释标题行以使其成为 PNG 时,它不会正确发送请求。
  • 是什么让您认为它没有正确发送请求?
  • 基于回显请求应该被API接受并生成有效条形码的假设,当标头更改时,API会吐出通用的1级条形码,其中没有存储数据.
  • 原来问题出在发送 0x00 作为字节数组的一部分。无论如何围绕这个?一旦到达0x00,它就会导致请求认为它是数据的结尾。我可以将它以不同的方式发送到 API 吗?
【解决方案2】:

您不能使用 Google Chart Server 对字节数组进行编码——它对字符串进行操作。我认为这些是解决这个问题的勇敢尝试,但由于您找到的原因,最终不会奏效。

您应该只在本地使用 zxing 项目中的编码器。它也对字符串进行操作,但是,您实际上可以通过这种方式轻松更改或注入直接指定字节数组的调用。

【讨论】:

    猜你喜欢
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    相关资源
    最近更新 更多