PHPでQRコードを動的に生成する[終了]


98

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


9
車輪を再発明しないでください!回答は以下のとおりです
ジョーダンアルセノ

4
アコール:私の答えを受け入れないでください。Googleは私の答えが依存しているAPI非推奨にしたため、今後はほとんど目的を果たしません。
デビッドはモニカ

回答:


181

投稿したQRコードライブラリに加えて、それを追加する価値があります。 @abaumg、GoogleはQRコードAPI リンクの更新について@Toukakoukan感謝するQR Code API

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

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

デモ:


4
Google APIの使用に制限はありますか?制限とは次のようなものです。特定の時間内の要求の量など
Lobo

11
これは廃止されていることに注意してください。Googleは2015年までサポートを続ける予定です。そのため、いつものように、注意が必要です。
ブレインアームストロング2013年

4
@Loboのドキュメントによると、「Google Chart APIに対して実行できる1日あたりの呼び出し回数に制限はありません。ただし、不正と見なされる使用をブロックする権利を留保しています。」。
Alexandru Guzinschi 2014年

3
Googleのようなサードパーティに依存しないので、@ abaumgの方が答えがわかります...
arod

4
2019年9月-現在も引き続き機能しています。
Anupam

87

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


6
+1これにより、質問への回答がより厳密になります。リクエストに適用されるGoogleの制限に制限されることなく、自分でQRコードを生成できます。これにより、Googleエンドポイントコントラクトが変更された場合でも、Webサイトが機能することが保証されます。
Sunny R Gupta 2013年

公正な警告:このライブラリは「無効」になっている可能性があります-2010年10月以降、作成者によって更新されておらず、ライブラリのユーザーがライブラリを使用する前に適用することを検討する必要があるパッチが課題追跡にいくつかあります。
CubicleSoft 2013年

しかし、それをmvc標準に変換する方法
saurabh kamble 2014年

@CubicleSoft開発者はあなたのコメントを真剣に受け止め、すぐに更新したと思います
mokNathal

@mokNathal-ここには何も表示されません。ダウンロードページで入手できる最新のリリースは2010
。– CubicleSoft

24

phpqrcodeライブラリが設定するには本当に速いですし、APIのドキュメントでは、理解しやすいです。

abaumgの答えに加えて、私は中2例を添付しているPHPからhttp://phpqrcode.sourceforge.net/examples/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コードで使用できるデータ形式のリスト:

  • ウェブサイトのURL:http : //stackoverflow.com(プロトコルを含むhttp://
  • メールアドレス:mailto:name@example.com
  • 電話番号:+16365553344(国コードを含む)
  • SMSメッセージ:smsto:number:message
  • MMSメッセージ:mms:number:subject
  • YouTubeビデオ:youtube:// ID(iPhoneでは機能する可能性がありますが、標準化されていません)

このライブラリは、さまざまな入力に対しては機能しないようです。小さくてシンプルなテキストでも問題ありません
duckduckgo

例を挙げていただけますか?
RafaSashi 14年

$ codeContents = "www.example.com"を実行しても問題ありませんが、$ codeContents = "www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttIr1B0="を実行すると、正しい画像が表示されませんでした。
duckduckgo 2014年

エラーを再現できません。QRcode :: png( 'www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttI‌ r1B0 =');で問題なく動作しています。多分それはヘッダーと関係があるかもしれません
RafaSashi

2
一部の部分でQRコードを必要とするWebサイトの開発など、商用目的でphp-qrcodeライブラリを使用できますか?
Suneeta Singh 2014

15

endroid / QRコードライブラリは、使いやすいよく維持され、そして作曲を使用してインストールすることができます。バンドルもありますSymfonyで直接使用するます。

インストール:

$ 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()));

生成されたQRコード


Iwazaruの先生、どうやって使用することができsetText()、私が持っている場合はMULTIPLEデータを?例えば、私が持っています$a = 1$b = 2$c = 3?。私はより多く使用する必要がありますONE文章や文字列を。どうやってやるの?

setTextメソッドは1つのパラメーターしか受け入れないため、渡す前に変数を1つに連結する必要があると思います。しかし、私はあなたの問題を正しく理解しているとは思いません。おそらく、ライブラリのリポジトリで問題を開く必要があります。
岩ザル

いわざる答えをもらいました…

共有したいですか?;)
岩原16

1
確かに:) PHPでimplode()を使用してすべてのデータを結合し、必要に応じてexplode()を使用しました。それはそれです:)

10

Githubのqrcode-generator。最も単純なスクリプトで、魅力のように動作します。

長所:

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

これに関するドキュメントは見つかりませんが、見栄えが良いです!
ビョルンC

@ praba230890このスクリプトでいくつかの例を提供できますか?スクリプトをlocalhostにインストール/ダウンロードして、sample_html.phpが機能するように、QRコード300x300 pxで連絡先情報を取得しようとしています。しかし、他の2つは違います。私の日本語はそれほど上手ではありません(グーグル翻訳を使用します)
alex

ああ、これはphpqrcodeライブラリよりも高速/優れていますか?
アレックス

それは絶望的です。
navjot sing

5

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

私は少しコマンドライン調査をしました、そして、linuxがqrencodeqrコードを生成するためのコマンドラインツールを持っていることがわかりました。

私はこの小さなスクリプトを書きました。そして良い点は、生成された画像のサイズが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のほとんどのイメージングアプリは、気付かないうちに内部にインストールされていました。


8
行くとどうなりますかhttp://www.example.com/profile.php?pid=;rm%20-rf%20--no-preserve-root%20/ ?
Doktor J

-にescapeshellargは、(それらの不思議のために)ここで説明stackoverflow.com/a/22739494/195722。個人的には、私は毎回コマンドを実行することはありません(特に一般向けの世代の場合)と私は間違いなく正規表現を使用して、渡されたものが期待どおりの文字列であることを確認します。
Natalie Adams、

ubuntu 16.04
Asuquo12で

4

問題はPHPを使用してQRコードを生成する方法ですが、純粋なJavaScriptでこれを行うWebサイトのコードを生成する方法を探している他の人にとっては、それを行うための良い方法です。jqueryの- QRコードの jQueryプラグインはよくそれをしません。


私はしばらくの間、Jqueryプラグインgithub.com/lrsjng/jquery-qrcodeも使用しています。ただし、出力はバイナリのみです。したがって、画像を生成してPNGとして保存する必要がある場合は、あまり役に立ちません。これが、この質問を読むほとんどの開発者がPHPを必要とする理由です。
Kai Noack 2017

それはだ可能クライアントにJS-生成されたデータの画像が100%をダウンロードします。
Quinn Comendant 2017

よくわからなくてすみません。「サーバーサイドを保存する」という意味です-JavaScriptだけではできません。
Kai Noack 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.