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 srcde 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 PHPde 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?
setTextmé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 qrencodepara 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.