php phpqrcode 生成带颜色的二维码 定位角 内容 和背景色

下载qrcode
phpqrcode下载 https://sourceforge.net/projects/phpqrcode/

简单重写了一下二维码生成方法
默认的是背景 0,0,0 内容 255,255,255

找到 类QRimage下的image方法
复制替换

private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4,$color=[]) 
        {
            $h = count($frame);
            $w = strlen($frame[0]);
            
            $imgW = $w + 2*$outerFrame;
            $imgH = $h + 2*$outerFrame;
            
            $base_image =ImageCreate($imgW, $imgH);
          

            if(empty($color[0]) || (count($color[0]) < 3)){
                $color[0] = [255,255,255];
            }
            if(empty($color[1]) || (count($color[1]) < 3)){
                $color[1] = [0,0,0];
            }
            if(empty($color[2]) || (count($color[2]) < 3)){
                $color[2] = [0,0,0];
            }

            $col[0] = ImageColorAllocate($base_image,$color[0][0],$color[0][1],$color[0][2]);
            $col[1] = ImageColorAllocate($base_image,$color[1][0],$color[1][1],$color[1][2]);
            $col[2] = ImageColorAllocate($base_image,$color[2][0],$color[2][1],$color[2][2]);
            imagefill($base_image, 0, 0, $col[0]);

            for($y=0; $y<$h; $y++) {
                for($x=0; $x<$w; $x++) {
                    if ($frame[$y][$x] == '1') {
                        if(($y <= 7 ) && ($x <= 7|| $x >= $w-7)){
                            $key = 2;
                        }else if($y >= $h-7 && $x <= 7){
                            $key = 2;
                        }else{
                            $key = 1;    
                        }
                         ImageSetPixel($base_image,$x+$outerFrame,$y+$outerFrame,$col[$key]);
                    }
                }
            }
            // ImageCreate
            // imagecreatetruecolor  PNG图片背景透明用这个
            $target_image =ImageCreate($imgW * $pixelPerPoint, $imgH * $pixelPerPoint);
            ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH);
            ImageDestroy($base_image);
            
            return $target_image;
        }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
调用的时候多了一个参数$color 格式如下

// rbg颜色
        $color = [
            [255,255,255],//背景色
            [227,28,52],//定位角的颜色 
            [247,134,0],//中间内容的颜色
        ];
1
2
3
4
5
6
一定是rbg格式的颜色值

$color = [
    [255,255,255],//背景色
    [227,28,52],//定位角的颜色 
    [247,134,0],//中间内容的颜色
];
$qrcode->png($data, 'qRcode.png', $level, $size,2,false,$color);
1
2
3
4
5
6
效果 ↓↓

需要注意的是 $color 传参的地方需要修改的方法有点多 调用了好多方法 但是都不难找 看源码加一下参数就好了

或者下载我改好的phpqrcode.php
https://github.com/zlzlzlzlzlzlzl/qrcode-color
替换后 创建$color参数就可以调用了
————————————————
版权声明:本文为CSDN博主「that中间偏右」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44589491/article/details/104708412

上一篇:phpqrcode简单在线二维码生成工具源码 非第三方接口


下一篇:常见算法-第一次只出现一次的字符