5

Google チャート API から QR コードを生成する非常に単純な関数があります。

 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;
         }
    }

現在、これはマージンを除いて問題なく機能しています。

(ライブ URL をリンクしていないことをお詫びします - 私の DEV は localmachine にあります)

&chld=M|1何を試して&chld=L|0も、マージンを 0 にすることはできません。まず、何らかの理由で、補正レベル L が 0 のマージンを受け入れないのではないかと考えました&chld=M|3。文字列の最後に置く&chld=L|0か、完全に省略します。

しかし、何らかの理由で、私は常にデフォルトのマージン 4 を取得します。

私は何か間違ったことをしていますか??

EDIT I - URL のリクエスト後: 生成された URL は次のとおりです。

<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"/>

編集Ⅱ

このフィドルをチェックしてくださいhttp://jsfiddle.net/obmerk99/rsjcM/

それは問題を示しています。

4

3 に答える 3

13

Google チャートには、画像のサイズは大きくなりますが、コードのサイズは大きくならないという興味深い機能があります。

これは、コード内のデータのサイズによって異なります。

この3つの例を見てください

150 - マージンなしhttp://chart.apis.google.com/chart?cht=qr&chs=150x150&chld=L|0&chl=http://localhost/wp-sandbox/?p=6164

165 - マージンhttp://chart.apis.google.com/chart?cht=qr&chs=165x165&chld=L|0&chl=http://localhost/wp-sandbox/?p=6164

180 - マージンなしhttp://chart.apis.google.com/chart?cht=qr&chs=180x180&chld=L|0&chl=http://localhost/wp-sandbox/?p=6164

覚えておいてください -ほとんどのデバイスが適切にスキャンできるようにするには、コードにマージンが必要です。

于 2012-07-06T10:21:57.163 に答える
1

エンコードされたデータサイズがさまざまなQRコードを大量に生成すると、同じ問題が発生しました。

私がこれまでに見つけたのは、生成コードがおそらく各バーコードピクセルに対して同じ数のスクリーンピクセルサイズを課しているということです。

したがって、次のように仮定します。

  • swあなたが求めるQRコードの高さ/幅、スクリーンピクセルで、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 サイズの QR コードを要求すると、160/20=8 の余白がなくなる可能性があります。

最初の問題に戻ると、余白サイズの変動性を減らすことは、バーコード ピクセルの数を減らすことを意味します (ただし、QR コードの品質とエンコードされたデータのサイズに依存するため、それを制御することはできません)、結果の画面ピクセルを増やすことを意味します。寸法。

無限の次元を要求すると、マージンの変動はなくなりますが、Google はそれに満足するでしょうか :)

于 2013-01-23T11:43:06.013 に答える