Files
2026-03-17 19:05:34 +01:00

102 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# QRGdImage
[Class `QRGdImage`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRGdImage.php):
[GdImage](https://www.php.net/manual/book.image) raster graphic output (GIF, JPG, PNG, ...)
## Example
See: [GdImage example](https://github.com/chillerlan/php-qrcode/blob/main/examples/image.php)
Set the options:
```php
$options = new QROptions;
// $outputInterface can be one of the classes listed in `QROutputInterface::MODES`
$options->outputInterface = QRGdImageWEBP::class;
$options->quality = 90;
// the size of one qr module in pixels
$options->scale = 20;
$options->bgColor = [200, 150, 200];
$options->imageTransparent = true;
// the color that will be set transparent
// @see https://www.php.net/manual/en/function.imagecolortransparent
$options->transparencyColor = [200, 150, 200];
$options->drawCircularModules = true;
$options->drawLightModules = true;
$options->circleRadius = 0.4;
$options->keepAsSquare = [
QRMatrix::M_FINDER_DARK,
QRMatrix::M_FINDER_DOT,
QRMatrix::M_ALIGNMENT_DARK,
];
$options->moduleValues = [
QRMatrix::M_FINDER_DARK => [0, 63, 255], // dark (true)
QRMatrix::M_FINDER_DOT => [0, 63, 255], // finder dot, dark (true)
QRMatrix::M_FINDER => [233, 233, 233], // light (false)
QRMatrix::M_ALIGNMENT_DARK => [255, 0, 255],
QRMatrix::M_ALIGNMENT => [233, 233, 233],
QRMatrix::M_DATA_DARK => [0, 0, 0],
QRMatrix::M_DATA => [233, 233, 233],
];
```
Render the output:
```php
$data = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ';
$out = new QRCode($options)->render($data); // -> data:image/webp;base64,...
printf('<img alt="%s" src="%s" />', $alt, $out);
```
Return the `GdImage` instance (will ignore other output options):
```php
$options->returnResource = true;
/** @var \GdImage $gdImage */
$gdImage = new QRCode($options)->render($data);
// do stuff with the GdImage instance...
$size = imagesx($gdImage);
// ...
// ...dump output
header('Content-type: image/jpeg');
imagejpeg($gdImage);
imagedestroy($gdImage);
```
## Additional methods
| method | return | description |
|---------------------------------------------------|----------|--------------------------------------------------------------------------------------------------|
| (protected) `drawImage()` | `void` | Draws the QR image |
| (protected) `dumpImage()` | `string` | Creates the final image by calling the desired GD output function |
| (protected) `module(int $x, int $y, int $M_TYPE)` | `void` | Renders a single module |
| (protected) `setBgColor()` | `void` | Sets the background color |
| (protected) `setTransparencyColor()` | `void` | Sets the transparency color |
| (abstract protected) `renderImage()` | `void` | Renders the image with the gdimage function for the desired output, implemented by child classes |
## Options that affect this class
| property | type |
|------------------------|----------------|
| `$bgColor` | `mixed` |
| `$circleRadius` | `float` |
| `$drawCircularModules` | `bool` |
| `$drawLightModules` | `bool` |
| `$imageTransparent` | `bool` |
| `$quality` | `int` |
| `$keepAsSquare` | `array` |
| `$outputBase64` | `bool` |
| `$returnResource` | `bool` |
| `$scale` | `int` |
| `$transparencyColor` | `mixed` |