生成带二维码的图片

背景图+二维码 生成一张图片

帅气的二哈!

如;

下面是利用Yii2.0 qrcode + imagejpeg()函数 做成的方法

use dosamigos\qrcode\QrCode;
use dosamigos\qrcode\lib\Enum;
use yii\helpers\Url;

// 生成邀请二维码
public static function qr ($uid)
{
    set_time_limit(0);

    $url = "xucanjia.com";

    $text= "http://".$url."?pid=".Yii::$app->myfun->uid($uid,"en");

    $outfile1 = "./qrcode/{$uid}.png"; // 用户生成的邀请二维码  id.png
    $level = Enum::QR_ECLEVEL_L;
    $size = 3; // 二维码大小
    $margin = 0;// 0 代表二维码没有白边
    $saveAndPrint = false ;
    $qrcode = QrCode::png($text, $outfile1, $level, $size, $margin, $saveAndPrint, Enum::QR_FORMAT_PNG);


    $logo = $outfile1; //需要显示在二维码中的Logo图像
    $QR = './qrcode/qrcode.jpg'; //背景图

    $QR = imagecreatefromstring ( file_get_contents ( $QR ) );
    $logo = imagecreatefromstring ( file_get_contents ( $logo ) );
    $QR_width = imagesx ( $QR );
    $QR_height = imagesy ( $QR );

    $logo_width = imagesx ( $logo );
    $logo_height = imagesy ( $logo );

    $logo_qr_width = $QR_width / 5 +20;
    $scale = $logo_width / $logo_qr_width;

    $logo_qr_height = $logo_height / $scale;

    $from_width = ($QR_width - $logo_qr_width) / 2;

    // 150 542 是logo 在背景图中的位置
    imagecopyresampled ( $QR, $logo, 150, 542, 0, 0, $logo_qr_width, $logo_qr_height, $logo_height,$logo_width);

    $outfile2 =  './qrcode/'.$uid.'.jpg';
    $bool = imagejpeg ( $QR, $outfile2, 30); // 压缩到30的质量
    if ($bool) {
        $outUrl = Url::to('@web/qrcode/'.$uid.'.png', true);
        return Yii::$app->myfun->flag(true, $outUrl);
    }else{
        return Yii::$app->myfun->flag(false, "邀请二维码生成失败,请重试!");
    }

}

调用就保存到你设置保存的目录的地址了!




导航