2

背景

在我们公司,人工做的工作越少越好。我们的营销女士找到我,询问是否有办法使用 PHP 自动生成名片。我告诉她,如果她可以将模板保存为 SVG 文件,这应该不是问题。

所以她做到了。编辑文本非常简单,因为我只需找到详细信息空间并将其替换为用户输入。

问题

我目前遇到的最大问题是我从 Google Charts API 获得的二维码。二维码包含名片数据,便于保存到手机。通过调用 Google Charts API 检索 QR 码:

$request = "http://chart.apis.google.com/chart?chs=500x500&cht=qr&chld=M&chl=" . urlencode($vcard);

$vcard我用 PHP 构建的 VCard在哪里。这是可行的,因为在扫描二维码时可以使用 VCard。

我试过的

由于 SVG 文件中的任何图像都被编码为文本,因此我尝试了以下方法:

file_get_contents($request); // Seems the encoding is of as there are weird characters in the result
img2php.class // Downloaded from PHP Classes, but only converts images in a directory

附加信息

我意识到二维码是生成的PNG。不知道会不会影响回答。

另外,名片中的当前二维码编码如下:

<image overflow="visible" width="200" height="200"
xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEBZwFnAAD/
7AARRHVja3kAAQAEAAAAHgAA/+4AIUFkb2JlAGTAAAAAAQMA
EAMCAwYAAAReAAALrQAAHjX/2wCEABALCwsMCxAMDBAXDw0PFxsUEBAUGx8XFxcXFx8eFxoaGhoX
Hh4jJSclIx4vLzMzLy9AQEBAQEBAQEBAQEBAQEABEQ8PERMRFRISFRQRFBE
    ** random gibberish **
saaZZmll6QMgIAGkLbb5qxkhmSE47OSXBN9YXg81d+i5LV36LktWPktmRMsMqSFQrXIRg1v8bjuM
2IBmJtpbymu/Rclq79FyWrv0XJasl5p0mGQqABARbQW4fP8A/s//
2Q==" transform="matrix(0.2003 0 0 0.2003 56.5049 191.0313)">
</image>

问题

有没有一种方法可以从 Google API 获取 QR 码,然后将其编码为字符串并将其添加到 SVG 模板中?

4

1 回答 1

1

而且我自己设法修复了它......并且通过使用更多的谷歌搜索。

首先,从 Google API 拉取图像:

$image = file_get_contents('http://chart.apis.google.com/chart?chs=500x500&cht=qr&chld=M&chl=' . urlencode($vcard));

然后只需使用base64_encode将其编码为字符串:

$image = base64_encode($image);

那行得通。二维码扫描正确。:D

于 2012-11-09T07:21:42.770 回答