Estou tentando gerar códigos QR em meu site. Tudo o que eles precisam fazer é ter um URL, que uma variável em meu site fornecerá. Qual seria a maneira mais fácil de fazer isso?
Estou tentando gerar códigos QR em meu site. Tudo o que eles precisam fazer é ter um URL, que uma variável em meu site fornecerá. Qual seria a maneira mais fácil de fazer isso?
Respostas:
Vale a pena acrescentar que, além da biblioteca de códigos QR postada por @abaumg , o Google oferece umAPI de códigos QR API de códigos QR muito obrigado a @Toukakoukan pela atualização do link .
Para usar isso, basicamente:
https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
300x300
é o tamanho da imagem QR que você deseja gerar,chl
é a string codificada por url que você deseja transformar em um código QR, echoe
é a codificação (opcional).O link acima dá mais detalhes, mas para utilizá-lo basta que o src
de uma imagem aponte para o valor manipulado, assim:
<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" />
Demo:
A maneira mais fácil de gerar códigos QR com PHP é a biblioteca phpqrcode .
A biblioteca phpqrcode é muito rápida de configurar e a documentação da API é fácil de entender.
Além da resposta de abaumg, anexei 2 exemplos PHP
de http://phpqrcode.sourceforge.net/examples/index.php
1. Codificador de código QR
primeiro inclua a biblioteca de seu caminho local
include('../qrlib.php');
em seguida, para gerar a imagem diretamente como fluxo PNG, faça, por exemplo:
QRcode::png('your texte here...');
para salvar o resultado localmente como uma imagem 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. Decodificador de código QR
Veja também o decodificador zxing :
http://zxing.org/w/decode.jspx
Muito útil para verificar a saída.
3. Lista de formato de dados
Uma lista de formatos de dados que você pode usar em seu código QR de acordo com o tipo de dados:
http://
)A biblioteca endroid / QrCode é fácil de usar, bem mantida e pode ser instalada usando o composer. Também existe um pacote para usar diretamente com o Symfony.
Instalando:
$ composer require endroid/qrcode
Uso:
<?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()
se tenho VÁRIOS dados? Por exemplo, eu tenho $a = 1
, $b = 2
, $c = 3
?. Preciso usar mais de UMA frase ou String. Como eu posso fazer isso?
setText
método aceita apenas um parâmetro, acho que você deve concatenar suas variáveis em um antes de passá-lo. Mas não tenho certeza se estou entendendo seu problema corretamente, talvez você deva abrir um problema no repositório da biblioteca.
gerador de qrcode no Github. Script mais simples e funciona como charme.
Prós:
Eu uso o google qrcode api há algum tempo, mas não gostei disso porque requer que eu esteja na Internet para acessar a imagem gerada.
Eu fiz uma pequena pesquisa de linha de comando e descobri que o linux tem uma ferramenta de linha de comando qrencode
para gerar códigos QR.
Eu escrevi este pequeno script. E a parte boa é que a imagem gerada tem menos de 1 KB de tamanho. Bem, os dados fornecidos são simplesmente um 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);
Então no html carrego a imagem:
<img class="emrQRCode" src="<?=$imgData ?>" />
Você só precisa instalá-lo. [a maioria dos aplicativos de imagem no Linux o teria instalado sob o capô sem você perceber.
http://www.example.com/profile.php?pid=;rm%20-rf%20--no-preserve-root%20/ ?
Eu sei que a questão é como gerar códigos QR usando PHP, mas para outras pessoas que estão procurando uma maneira de gerar códigos para sites que fazem isso em javascript puro é uma boa maneira de fazer isso. O plugin jquery-qrcode jquery faz isso bem.