ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-07-14 10:02:23  阅读:268  来源: 互联网

标签:pixelPerPoint color image phpqrcode 背景色 base php col 255


下载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

标签:pixelPerPoint,color,image,phpqrcode,背景色,base,php,col,255
来源: https://blog.csdn.net/qq_39414785/article/details/118720642

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有