PHP를 사용하여 동적으로 QR 코드 생성 [닫기]


98

내 웹 사이트에서 QR 코드를 생성하려고합니다. 그들이해야 할 일은 내 사이트의 변수가 제공 할 URL을 포함하는 것입니다. 이를 수행하는 가장 쉬운 방법은 무엇입니까?


9
바퀴를 다시 발명하지 마십시오! 아래 답변은 완벽합니다
Jordan Arseno

4
Akor : 내 대답을 받아들이지 마십시오. Google은 내 답변이 의존 하는 API더 이상 사용하지 않으므로 지금부터는 거의 목적이 없습니다.
다윗은 분석 재개 모니카 말한다

답변:


182

추가 할 가치가 있습니다. @abaumg 에서 게시 한 QR 코드 라이브러리 외에도 Google은QR 코드 API QR Codes 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" />

데모:


4
Google API 사용에 제한이 있습니까?. 제한 사항을 의미합니다 : 주어진 시간에 요청의 양 등
Lobo

11
이것은 더 이상 사용되지 않는다는 점에 유의해야합니다. Google은 2015 년까지 지원을 계속할 계획입니다. 항상 그렇듯이주의해야합니다.
blainarmstrong 2013 년

4
@Lobo 문서 에 따르면 " Google Chart API에 대한 일일 호출 수에는 제한이 없습니다. 그러나 우리는 악의적 인 것으로 간주되는 모든 사용을 차단할 권리가 있습니다. ".
Alexandru Guzinschi 2014 년

3
@abaumg의 답변은 Google과 같은 타사에 의존하지 않기 때문에 더 나은 답변을 찾습니다 ...
arod

4
2019 년 9 월-아직 작동 중입니다!
Anupam

87

PHP로 QR 코드를 생성하는 가장 쉬운 방법은 phpqrcode 라이브러리 입니다.


6
+1하면 질문에 더 가깝게 답할 수 있습니다. 요청에 적용되는 Google 제한의 제한없이 직접 QR 코드를 생성 할 수 있습니다. 이렇게하면 Google 엔드 포인트 계약이 변경된 경우에도 웹 사이트가 작동하는지 확인할 수 있습니다.
Sunny R Gupta 2013 년

공정한 경고 :이 라이브러리는 "죽은"것 같습니다.이 라이브러리는 2010 년 10 월 이후로 작성자가 업데이트하지 않았으며 라이브러리 사용자가 라이브러리를 사용하기 전에 적용해야 할 몇 가지 패치가 이슈 트래커에 있습니다.
CubicleSoft 2013 년

그러나 그것을 mvc 표준으로 변환하는 방법 어떤 아이디어 !!!!
saurabh kamble 2014-06-19

나는 개발자가 바로 진지하게 의견을 가져다가 업데이트 생각 @CubicleSoft
mokNathal

@mokNathal-여기에 다른 것이 보이지 않습니다. Downloads (다운로드) 페이지에서 사용할 수있는 가장 최근의 자료는 2010 년에서 아직도
CubicleSoft

24

phpqrcode 라이브러리 구성에 정말 빨리하고 API 문서는 이해하기 쉽다.

abaumg의 답변 외에도 http://phpqrcode.sourceforge.net/examples/index.php 에서 2 개의 예제를 첨부 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에서 작동 할 수 있음)

이 라이브러리 나던은 입력, 소형 및 간단한 텍스트의 다양한 작품을 좋아하지만 보인다
덕 덕고

예를 들어 주시겠습니까?
RafaSashi

$ codeContents = "www.example.com"을하면 괜찮지 만 $ codeContents = "www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttIr1B0="하면 올바른 이미지가 표시되지 않았습니다.
duckduckgo 2014 년

오류를 재현 할 수 없습니다. QRcode :: png ( 'www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttI‌ r1B0 ='); 어쩌면 헤더 함께 할 수있는 뭔가가
RafaSashi

2
php-qrcode 라이브러리를 일부 부분에서 qr 코드가 필요한 웹 사이트를 개발하는 것과 같은 상업적 목적으로 사용할 수 있습니까?
Suneeta Singh 2014

16

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

생성 된 QRCode


이와 자루 선생님, 데이터 setText()여러 개인 경우 어떻게 사용할 수 있습니까? 예를 들어, 내가 가지고있는 $a = 1, $b = 2, $c = 3?. 나는 더 이상 사용할 필요 ONE 문장 또는 문자열. 어떻게 할 수 있습니까?

는 AS setText방법은 단 하나 개의 매개 변수를 허용 당신이 그것을 전달하기 전에 하나에 당신의 변수을 연결해야 같아요. 하지만 문제를 올바르게 이해하고 있는지 잘 모르겠습니다. 라이브러리의 저장소에서 문제를 열어야 할 수도 있습니다.
Iwazaru

Iwazaru는 내가 .. 대답 선생님있어

공유 하시겠습니까? )
Iwazaru

1
물론 :) 모든 데이터를 결합하기 위해 PHP에서 implode ()를 사용하고 필요한 경우 explode ()를 사용했습니다. 그게 전부 선생님 :

10

Github의 qrcode-generator . 가장 간단한 스크립트와 매력처럼 작동합니다.

장점 :

  • 제 3 자 의존성 없음
  • QR 코드 생성 횟수 제한 없음

이것에 대한 문서를 찾을 수 없지만 멋져 보입니다!
Björn C

@ praba230890이 스크립트로 더 많은 예제를 제공 할 수 있습니까? QR 코드 300x300 px로 연락처 정보를 얻으려고합니다. localhost에 스크립트를 설치 / 다운로드했으며 sample_html.php가 작동합니다. 그러나 다른 두 사람은 그렇지 않습니다. 내 일본어가 그다지 좋지 않습니다 (ok I will use google translate)
alex

오, 이것이 phpqrcode 라이브러리보다 빠르거나 더 좋을까요?
alex

절망적입니다.
navjot singh

5

나는 한동안 Google qrcode api를 사용해 왔지만 생성 된 이미지에 액세스하려면 인터넷에 있어야하므로이 방식이 마음에 들지 않았습니다.

나는 약간의 comand-line 조사를했고 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 ?>" />

설치 만하면됩니다. [리눅스에있는 대부분의 이미징 앱은 여러분이 깨닫지 못한 채 후드 아래에 설치했을 것입니다.


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

우분투 16.04
Asuquo12

4

질문은 PHP를 사용하여 QR 코드를 생성하는 방법이라는 것을 알고 있지만 웹 사이트에 대한 코드를 생성하는 방법을 찾고있는 다른 사람들에게는 순수한 자바 스크립트로이를 수행하는 것이 좋은 방법입니다. JQuery와-하시면 자동의 jQuery 플러그인은 잘한다.


나는 잠시 동안 Jquery 플러그인 github.com/lrsjng/jquery-qrcode 를 사용하고 있습니다. 그러나 출력은 바이너리입니다. 따라서 이미지를 생성하고 PNG로 저장해야하는 경우 그다지 도움이되지 않습니다. 그렇기 때문에이 질문을 읽는 대부분의 개발자는 PHP가 필요합니다.
Kai Noack

그건 가능한 클라이언트에 JS 생성 된 화상 데이터를 100 % 다운로드.
Quinn Comendant

명확하지 않아서 죄송합니다. "서버 측 저장"을 의미했습니다. 자바 스크립트로는 불가능합니다.
카이 NOACK
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.