1. Go to this page and download the library: Download crazy-goat/scanmephp library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
crazy-goat / scanmephp example snippets
use CrazyGoat\ScanMePHP\QRCode;
$qr = new QRCode('https://example.com');
echo $qr->render();
use CrazyGoat\ScanMePHP\QRCode;
use CrazyGoat\ScanMePHP\QRCodeConfig;
use CrazyGoat\ScanMePHP\Renderer\FullBlocksRenderer;
$config = new QRCodeConfig(
engine: new FullBlocksRenderer(sideMargin: 4),
label: 'ScanMePHP',
);
$qr = new QRCode('https://example.com', $config);
echo $qr->render();
use CrazyGoat\ScanMePHP\Renderer\HalfBlocksRenderer;
$config = new QRCodeConfig(
engine: new HalfBlocksRenderer(sideMargin: 4),
);
use CrazyGoat\ScanMePHP\Renderer\SimpleRenderer;
$config = new QRCodeConfig(
engine: new SimpleRenderer(sideMargin: 4),
);
use CrazyGoat\ScanMePHP\Renderer\SvgRenderer;
use CrazyGoat\ScanMePHP\ModuleStyle;
$config = new QRCodeConfig(
engine: new SvgRenderer(moduleSize: 12),
moduleStyle: ModuleStyle::Rounded, // Square, Rounded, or Dot
label: 'Scan Me!',
);
$qr = new QRCode('https://example.com', $config);
$qr->saveToFile('qrcode.svg');
use CrazyGoat\ScanMePHP\Renderer\PngRenderer;
$config = new QRCodeConfig(
engine: new PngRenderer(moduleSize: 10),
);
$qr = new QRCode('https://example.com', $config);
$qr->saveToFile('qrcode.png');
// Or use as data URI (e.g. in <img> tags)
$dataUri = $qr->getDataUri(); // data:image/png;base64,...
use CrazyGoat\ScanMePHP\Renderer\HtmlDivRenderer;
$config = new QRCodeConfig(
engine: new HtmlDivRenderer(moduleSize: 10, fullHtml: false),
label: 'ScanMePHP',
);
$qr = new QRCode('https://example.com', $config);
// Fragment only (for embedding)
$html = $qr->render();
// Full HTML page
$config = new QRCodeConfig(
engine: new HtmlDivRenderer(fullHtml: true),
);
use CrazyGoat\ScanMePHP\Renderer\HtmlTableRenderer;
$config = new QRCodeConfig(
engine: new HtmlTableRenderer(moduleSize: 8, fullHtml: true),
);
use CrazyGoat\ScanMePHP\QRCodeConfig;
use CrazyGoat\ScanMePHP\ErrorCorrectionLevel;
use CrazyGoat\ScanMePHP\ModuleStyle;
use CrazyGoat\ScanMePHP\Renderer\SvgRenderer;
$config = new QRCodeConfig(
engine: new SvgRenderer(), // renderer instance
errorCorrectionLevel: ErrorCorrectionLevel::Medium, // Low, Medium, Quartile, High
label: 'My QR Code', // optional label below QR
size: 0, // QR version 1-40, 0 = auto
margin: 4, // quiet zone in modules
foregroundColor: '#000000',
backgroundColor: '#FFFFFF',
moduleStyle: ModuleStyle::Square, // Square, Rounded, Dot (SVG only)
invert: false, // swap foreground/background
);
$config = new QRCodeConfig(
engine: new FullBlocksRenderer(sideMargin: 4),
invert: true,
label: 'Dark Mode',
);
$config = new QRCodeConfig(
engine: new SvgRenderer(),
invert: true,
foregroundColor: '#FFFFFF',
backgroundColor: '#000000',
);
$qr = new QRCode('https://example.com', $config);
$qr->render(); // returns string
$qr->saveToFile('qr.svg'); // writes to file
$qr->getDataUri(); // data:image/svg+xml;base64,...
$qr->toBase64(); // raw base64
$qr->toHttpResponse(); // sends Content-Type header, outputs, exits
$qr->getMatrix(); // raw Matrix object
$qr->validate(); // true if data fits in QR version
echo $qr; // __toString() calls render()
use CrazyGoat\ScanMePHP\RendererInterface;
use CrazyGoat\ScanMePHP\Matrix;
use CrazyGoat\ScanMePHP\RenderOptions;
class MyCustomRenderer implements RendererInterface
{
public function render(Matrix $matrix, RenderOptions $options): string
{
$size = $matrix->getSize();
for ($y = 0; $y < $size; $y++) {
for ($x = 0; $x < $size; $x++) {
$isDark = $matrix->get($x, $y);
// ... your rendering logic
}
}
return $output;
}
public function getContentType(): string
{
return 'text/plain';
}
}
use CrazyGoat\ScanMePHP\FfiEncoder;
$encoder = new FfiEncoder(__DIR__ . '/libscanme_qr.so');
$qr = new QRCode('https://example.com', encoder: $encoder);