Próbuję wygenerować kody QR na mojej stronie internetowej. Wszystko, co muszą zrobić, to mieć w sobie adres URL, który zapewni zmienna w mojej witrynie. Jaki byłby najłatwiejszy sposób na zrobienie tego?
Próbuję wygenerować kody QR na mojej stronie internetowej. Wszystko, co muszą zrobić, to mieć w sobie adres URL, który zapewni zmienna w mojej witrynie. Jaki byłby najłatwiejszy sposób na zrobienie tego?
Odpowiedzi:
Warto dodać, że oprócz biblioteki kodów QR opublikowanej przez @abaumg , Google udostępnia plikQR Codes API QR Codes API Podziękowania dla @Toukakoukan za aktualizację linków .
Aby z tego skorzystać, w zasadzie:
https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
300x300
to rozmiar obrazu QR, który chcesz wygenerować,chl
jest ciąg url zakodowane chcesz zmienić na kod QR ichoe
jest (opcjonalne) kodowanie.Powyższy link daje więcej szczegółów, ale aby go użyć, wystarczy src
wskazać na obrazie zmanipulowaną wartość, na przykład:
<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" />
Próbny:
Najłatwiejszym sposobem generowania kodów QR za pomocą PHP jest biblioteka phpqrcode .
Biblioteka phpqrcode jest naprawdę szybki, aby skonfigurować i dokumentacja API jest łatwe do zrozumienia.
Oprócz odpowiedzi abaumga załączyłem 2 przykłady PHP
z http://phpqrcode.sourceforge.net/examples/index.php
1. Koder QR code
najpierw dołącz bibliotekę ze ścieżki lokalnej
include('../qrlib.php');
następnie, aby wyprowadzić obraz bezpośrednio jako strumień PNG, na przykład:
QRcode::png('your texte here...');
aby zapisać wynik lokalnie jako obraz 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. Dekoder kodu QR
Zobacz także dekoder zxing :
http://zxing.org/w/decode.jspx
Całkiem przydatne do sprawdzenia wyników.
3. Lista formatu danych
Lista formatów danych, których możesz użyć w kodzie QR zgodnie z typem danych:
http://
)Biblioteka endroid / QrCode jest łatwa w użyciu, dobrze utrzymana i można ją zainstalować za pomocą narzędzia Composer . Istnieje również pakiet do bezpośredniego użycia z Symfony.
Instalowanie:
$ composer require endroid/qrcode
Stosowanie :
<?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()));
setText()
jeśli mam WIELE danych? Na przykład, mam $a = 1
, $b = 2
, $c = 3
?. Potrzebuję więcej niż JEDNEGO zdania lub ciągu znaków. Jak mogę to zrobić?
setText
metoda akceptuje tylko jeden parametr, sądzę, że przed przekazaniem należy połączyć zmienne w jeden. Ale nie jestem pewien, czy dobrze rozumiem twój problem, może powinieneś otworzyć problem w repozytorium biblioteki.
qrcode-generator na Github. Najprostszy skrypt i działa jak urok.
Plusy:
Używam google qrcode api od jakiegoś czasu, ale nie podobało mi się to, ponieważ wymaga to połączenia z Internetem, aby uzyskać dostęp do wygenerowanego obrazu.
Zrobiłem trochę badań w linii poleceń i odkryłem, że linux ma narzędzie wiersza poleceń qrencode
do generowania kodów QR.
Napisałem ten mały scenariusz. A dobrą stroną jest to, że wygenerowany obraz ma rozmiar mniejszy niż 1 KB. Cóż, dostarczone dane to po prostu adres 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);
Następnie w html ładuję obrazek:
<img class="emrQRCode" src="<?=$imgData ?>" />
Wystarczy go zainstalować. [większość aplikacji do przetwarzania obrazu na Linuksie zainstalowałaby go pod maską bez twojej wiedzy.
http://www.example.com/profile.php?pid=;rm%20-rf%20--no-preserve-root%20/ ?
Wiem, że pytanie brzmi, jak generować kody QR za pomocą PHP, ale dla innych, którzy szukają sposobu na generowanie kodów dla stron internetowych, zrobienie tego w czystym javascript jest dobrym sposobem na zrobienie tego. Jquery-qrcode plugin jquery robi to dobrze.