web-dev-qa-db-ja.com

PHPを使用してQRコードを動的に生成する

ウェブサイトでQRコードを生成しようとしています。彼らがしなければならないことは、私のサイトの変数が提供するURLを持っていることです。これを行う最も簡単な方法は何ですか?

88
AKor

@ abaumg が投稿したQRコードライブラリに加えて、Googleは QRコードAPI QRコードAPI@ Toukakoukan に感謝します リンク更新

これを使用するには、基本的に:

https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
  • 300x300は、生成するQR画像のサイズです。
  • chlは、QRコードに変更するURLエンコードされた文字列です。
  • choeは(オプションの)エンコードです。

上記のリンクは詳細を提供しますが、それを使用するには、画像のsrcが操作された値を指すようにします。

<img src="https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8" title="Link to Google.com" />

デモ:

164
anon

PHPを使用してQRコードを生成する最も簡単な方法は、 phpqrcodeライブラリ です。

81
abaumg

phpqrcode libraryは本当に設定が速く、APIドキュメントは理解しやすいです。

abaumgの回答に加えてhttp://phpqrcode.sourceforge.net/examplesからのPHPの2つの例を添付しました。 /index.php

1。 QRコードエンコーダー

最初にローカルパスからライブラリを含めます

include('../qrlib.php');

次に、PNGストリームとして画像を直接出力するには、次のようにします。

QRcode::png('your texte here...');

結果をPNG画像としてローカルに保存するには:

$tempDir = EXAMPLE_TMP_SERVERPATH;

$codeContents = 'your message here...';

$fileName = 'qrcode_name.png';

$pngAbsoluteFilePath = $tempDir.$fileName;
$urlRelativeFilePath = EXAMPLE_TMP_URLRELPATH.$fileName;

QRcode::png($codeContents, $pngAbsoluteFilePath); 

2。 QRコードデコーダー

zxingデコーダーも参照してください。

http://zxing.org/w/decode.jspx

出力を確認するのに非常に便利です。

3。データ形式のリスト

データタイプに応じてQRコードで使用できるデータ形式のリスト:

  • WebサイトのURL: http://stackoverflow.com (プロトコルhttp://を含む)
  • メールアドレス:mailto:[email protected]
  • 電話番号:+16365553344(国コードを含む)
  • SMSメッセージ:smsto:number:message
  • MMSメッセージ:mms:number:subject
  • YouTubeビデオ:youtube:// ID(標準化されていないiPhoneで動作する場合があります)
20
RafaSashi

endroid/QrCode library は使いやすく、よく管理されており、composerを使用してインストールできます。 Symfonyで直接使用する bundle もあります。

インストール:

$ composer require endroid/qrcode

使用法 :

<?php

use Endroid\QrCode\QrCode;

$qrCode = new QrCode();
$qrCode
    ->setText('Life is too short to be generating QR codes')
    ->setSize(300)
    ->setPadding(10)
    ->setErrorCorrection('high')
    ->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0))
    ->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0))
    ->setLabel('Scan the code')
    ->setLabelFontSize(16)
    ->setImageType(QrCode::IMAGE_TYPE_PNG)
;

// now we can directly output the qrcode
header('Content-Type: '.$qrCode->getContentType());
$qrCode->render();

// or create a response object
$response = new Response($qrCode->get(), 200, array('Content-Type' => $qrCode->getContentType()));

The generated QRCode

13
Iwazaru

qrcode-generator Githubで。最もシンプルなスクリプトで、チャームのように機能します。

長所:

  • サードパーティの依存関係なし
  • QRコードの生成数に制限はありません
9
praba230890

私はしばらくの間google qrcode apiを使用していましたが、生成されたイメージにアクセスするにはインターネットに接続する必要があるため、これはあまり好きではありませんでした。

コマンドラインで少し調べてみると、Linuxにはqr-codeを生成するためのコマンドラインツールqrencodeがあることがわかりました。

この小さなスクリプトを書きました。そして良い点は、生成された画像のサイズが1KB未満であることです。提供されるデータは、単にURLです。

$url = ($_SERVER['HTTPS'] ? "https://" : "http://").$_SERVER['HTTP_Host'].'/profile.php?id='.$_GET['pid'];
$img = Shell_exec('qrencode --output=- -m=1 '.escapeshellarg($url));

$imgData = "data:image/png;base64,".base64_encode($img);

次に、htmlで画像をロードします。

<img class="emrQRCode" src="<?=$imgData ?>" />

インストールする必要があります。 [Linuxのほとんどのイメージングアプリは、気付かないうちにボンネットの下にインストールしていたでしょう。

4
Peter

私は質問がPHPを使用してQRコードを生成する方法であることを知っていますが、純粋なjavascriptでこれを行うWebサイトのコードを生成する方法を探している人にとってはそれを行う良い方法です。 jquery-qrcode jqueryプラグインがうまく機能します。

4
Quinn Comendant