如何在Yii2上使用Endroid \ QrCode?

时间:2017-03-21 18:55:44

标签: php yii2 qr-code yii2-advanced-app

我有以下代码,库是通过composer安装的。

型号:

public function insertQR()
 {
        $this->qrCode = new QrCode();
        $this->qrCode
            ->setText($this->qr_text)
            ->setSize(300)
            ->setPadding(10)
            ->setErrorCorrection('high')
            ->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0])
            ->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0])
            ->setLabel('Scan the code')
            ->setLabelFontSize(16)
            ->setImageType(QrCode::IMAGE_TYPE_PNG)
        ;

   }// end function 

查看:

<?php
// now we can directly output the qrcode
        header('Content-Type: '.$model->qrCode->getContentType());
        $model->qrCode->render();

?>  

然而,在渲染视图的那一刻,我得到了以下原始png而不是png: �PNGIHDR@ [V�J�!PLTE���������???���___���&gt;�-�pHYSs���+�IDATx����n�F� a��....

可能有什么不对?感谢。

2 个答案:

答案 0 :(得分:0)

设置标题如下:

// At the top.
use yii\web\Response;

// In your function.
$response = Yii::$app->getResponse();
$response->headers->set('Content-Type', $model->qrCode->getContentType());
$response->format = Response::FORMAT_RAW;
$model->qrCode->render();

Yii2要求在返回图像响应时将响应的格式设置为raw。

答案 1 :(得分:0)

->setSize(300)

将其增加到更大的数字,例如500或1000