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.