vladpak1/too-simple-qr

chillerlan/php-qrcode 库的包装器,让您轻松生成各种 QR 码。

1.0.1 2023-09-16 05:30 UTC

This package is auto-updated.

Last update: 2024-09-16 07:55:01 UTC


README

vladpak1\TooSimpleQR

TooSimpleQR 是在优秀的 chillerlan/php-qrcode 之上的包装器,简化了 QR 码的生成,更注重定制化和接口的易用性。

这个小型宠物项目远非完美,因为我还是一个正在学习绳索的新手开发者。请在使用时考虑到我的有限经验,并自行承担风险。

如果您想在严肃的项目中生成 QR 码,最好使用 chillerlan/php-qrcode

使用此库创建的 QR 码示例

需求

  • PHP 8.0+
  • Composer
  • GD 或 Imagick

安装

{
  "require": {
    "vladpak1/too-simple-qr": "*"
  },
  "minimum-stability": "dev",
  "prefer-stable": true
}

计划迁移到稳定版本,所以很快这个步骤将不再需要。

或者如果您已经将最小稳定性设置为 dev,您可以简单地运行

composer require vladpak1/too-simple-qr

使用示例

use vladpak1\TooSimpleQR\QRFactory;
use vladpak1\TooSimpleQR\OutputConstants;
use vladpak1\TooSimpleQR\Image\Logo;

// Load composer
require_once __DIR__ . '/vendor/autoload.php';

$qr = \vladpak1\TooSimpleQR\QRFactory::QRCode();

$settings = \vladpak1\TooSimpleQR\QRFactory::QRSettings();

$logo = new Logo();
$logo->setByPath(Logo::TWITTER_LOGO);

$settings
    ->setOutput(OutputConstants::OUTPUT_PNG)
    ->setSize(500)                              // Size in pixels.
    ->setBackgroundColor('#ffffff')             // Background color in HEX format.
    ->setMargin(50)                             // Margin in pixels.
    ->setFinderColor('#1d9bf0')                 // Finder color in HEX format.
    ->setDataColor('#3284bc')                   // Data color in HEX format.
    ->setCorrectionLevel(OutputConstants::CORRECTION_LEVEL_H) // Correction level.
    ->setCircularModules(true)                  // Round modules.
    ->setCircleRadius(0.75)                     // Circle radius.
    ->setLogo($logo)                            // Logo.
    ->setCustomFinderShape(OutputConstants::SHAPE_CIRCLE); // Custom finder shape.

$qrCodeImage = $qr
    ->setData('Hello World!')
    ->setSettings($settings)
    ->render();
    
// Now we can save or directly output (as HTML) the QR code.
$qrCodeImage->echo();

因此,我们得到

我们还可以通过添加,例如,渐变来扭曲 QR 码

->setBackgroundGradient('#FFD8D8', '#FFF9F9', Gradient::DIRECTION_BOTTOM_TO_TOP);

需要快速生成 QR 码吗?

考虑使用预设 - 生成 QR 码的预定义设置。

您可以通过扩展 vladpak1\TooSimpleQR\Preset\AbstractPreset 类轻松创建自己的预设。

使用预设的示例

$preset = new \vladpak1\TooSimpleQR\Preset\Presets\InstagramPreset('Hello World!');

// You can also set the driver and output interface for the preset.
$preset
    ->setDriver(\vladpak1\TooSimpleQR\OutputConstants::DRIVER_GD)
    ->setOutput(\vladpak1\TooSimpleQR\OutputConstants::OUTPUT_PNG);
    
// We get a branded Instagram QR code.
$preset->render()->save('path/to/qr.png');

GD 或 Imagick?

此库支持 GD 或 Imagick,但某些设置仅由 Imagick 支持。可能在未来,我会使一切更加一致,驱动程序之间的差异不会那么明显。然而,目前推荐使用 Imagick。

库将根据您的服务器上安装的内容自动选择要使用的驱动程序,优先考虑 Imagick。

但您也可以强制指定驱动程序

$qr->setDriver(OutputConstants::DRIVER_GD);

测试

TooSimpleQR 使用 PHPUnit 进行测试。目前测试非常少,主要由于包架构的问题。

要运行测试,请使用以下命令

composer test

许可证

TooSimpleQR 在 MIT 许可证下授权。