Изменить фон QR-кода на белый - PullRequest
0 голосов
/ 10 января 2020

Я совершенно новичок в php разработке. Я генерирую QR-код через библиотеку phpqrcode. Код для этого написан ниже, и выход для него показан на приложенном изображении.

<?php
    include('phpqrcode/qrlib.php');
    // outputs image directly into browser, as PNG stream
    QRcode::png('PHP QR Code :)');
?> 

enter image description here

Проблема в том, что QR-код появляется на черном фоне на экране и в центре, тогда как мне нужно, чтобы он был на белом фоне и в верхнем правом углу. Я попытался использовать приведенный ниже код, но он делает QR-код невидимым, как показано на прилагаемом изображении.

enter image description here

<!DOCTYPE html>
<html lang="en">
    <body>
        <div style="background-color:white">
            <?php
                header('Content-Type: image/png');
                require_once 'vendor/autoload.php';
                $qr = new Endroid\QrCode\QrCode();
                $qr->setText('http://www.google.co.uk');
                $qr->setSize(100);
                $qr->setPadding(10);
                $qr->render();
            ?>
        </div>
    </body>
</html>

1 Ответ

0 голосов
/ 10 января 2020

Проблема в вашем коде заключается в том, что вы пытаетесь отобразить изображение (Content-Type: image/png) внутри ответа html.

Если вы вернете только изображение, оно будет отображаться правильно. Вы должны сохранить изображение в файле, а затем отобразить его в html:

Версия 1.9.3

<html lang="en">
    <body>
        <div>
            <?php
                require 'vendor/autoload.php';
                $qr = new \Endroid\QrCode\QrCode();
                $qr->setText('http://www.google.co.uk')
                    ->setSize(100)
                    ->setPadding(10)
                    // In case you want to change colors
                    // RED foreground
                    ->setForegroundColor(['r' => 255, 'g' => 0, 'b' => 0, 'a' => 0]) 
                    // WHITE background
                    ->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]);
                $qr->save('/qrcode.png');
            ?>
            <p>QR Image:</p>
            <img src="<?= 'qrcode.png'; ?>" />
        </div>
    </body>
</html>

Версия 3.7. 5

<html lang="en">
    <body>
        <div>
            <?php
                require 'vendor/autoload.php';

                $qrCode = new \Endroid\QrCode\QrCode('http://www.google.co.uk');
                $qrCode->setSize(100);
                // Set advanced options
                $qrCode->setWriterByName('png');
                $qrCode->setMargin(10);
                // In case you want to change colors
                // RED foreground
                $qrCode->setForegroundColor(['r' => 255, 'g' => 0, 'b' => 0, 'a' => 0]);
                // WHITE blackground
                $qrCode->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]);
                // Save it to a file
                $qrCode->writeFile( '/qrcode.png');
            ?>
            <p>QR Image:</p>
            <img src="<?= 'qrcode.png'; ?>" />
        </div>
    </body>
</html>
...