Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-谷歌图表API-QR码边距不工作(错误或功能?)_Php_Google Visualization_Qr Code - Fatal编程技术网

PHP-谷歌图表API-QR码边距不工作(错误或功能?)

PHP-谷歌图表API-QR码边距不工作(错误或功能?),php,google-visualization,qr-code,Php,Google Visualization,Qr Code,我有一个非常简单的函数从谷歌图表API生成二维码 function o99_qr_code($size,$type,$url ) { $qr = ''; $dsize = $size .'x'.$size; // doubleSize $qr = '<img src="http://chart.apis.google.com/chart?cht=qr&chs=' . $dsize . '&chld=L|0&ch

我有一个非常简单的函数从谷歌图表API生成二维码

 function o99_qr_code($size,$type,$url ) {

        $qr = '';
        $dsize = $size .'x'.$size; // doubleSize

         $qr = '<img src="http://chart.apis.google.com/chart?cht=qr&chs=' . $dsize . '&chld=L|0&chl=' . $url . '" width="' .$size .'" height="'.$size .'" alt="QR code" title="QR Code for your mobile device"/>';

         switch ($type){
         case 'echo' :
         echo $qr;
         case 'return' :
         return $qr;
         }
    }
编辑II

看看这把小提琴


它证明了这个问题

谷歌图表有一个奇怪的功能,它会增加图像的大小,但不会增加代码的大小

这将取决于代码中数据的大小

看看这三个例子

150-无保证金

165-保证金

180-无边际


请记住,您的代码需要一个余量,以便大多数设备能够正确地扫描它

我在生成大量不同编码数据大小的二维码时遇到了相同的问题

到目前为止,我发现生成代码可能会对每个条形码像素施加相同数量的屏幕像素大小

因此,假设:

  • sw
    您要求的二维码高度/宽度,以屏幕像素为单位,比如150x150像素
  • bw
    编码数据的条形码像素数,比如20x20像素
  • cw
    每个条形码像素的屏幕像素数:
    cw=ceil(sw/bw)
    ,因此这里150/20=7,5=>cw=7
  • sw2
    以像素为单位的条形码实际宽度:
    sw2=cw*bw
    ,因此这里sw2=7*20=140像素
  • mw
    以像素为单位的边距宽度:
    mw=(sw-sw2)/2
    ,因此这里的边距为5像素
同样的例子,如果你要一个160x160大小的二维码,你很可能没有边距:160/20=8

回到您最初的问题,减小边距大小的可变性意味着要么减少条形码像素的数量(但您无法控制,因为这取决于二维码质量和编码数据的大小),要么增加生成的屏幕像素尺寸


如果你要求一个无限维,那么保证金就没有变化了,但我想知道谷歌是否会对此感到高兴:)

谷歌API也有同样的问题。因此,我最终使用了这种替代服务:


API()可以更好地控制所需的QR码图像输出。

能否显示生成的URL。。。看看这个
http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=it+适用于+me&choe=UTF-8&chld=M | 0
ok,解释为+1,但解决方案是什么?如何计算图像何时只增长,以及边距何时增长?检查小提琴。有人如何计算这些值?如何知道哪种尺寸的边距为0?根据你的问题,我认为这是一个错误。唯一真正的解决办法是使用另一个QR生成器,或者接受较小的余量。经过长时间的试验,我认为这取决于回复请求的服务器。。为了工作搬家很多,我发现相同的网站可以给出不同的结果。从代理进行操作并重新加载同一页面时,结果可能会发生变化。我想只有谷歌有答案(就像总是:-)在这里找到文档:
<img src="http://chart.apis.google.com/chart?cht=qr&chs=50x50&chld=L|0&chl=http://localhost/wp-sandbox/?p=6164" width="50" height="50" alt="QR code" title="QR code for your phone"/>