个性化自己的二维码,个性化自己二维码_PHP教程
个性化自己的二维码,个性化自己二维码
一、什么是二维码
二、我们如何制作二维码
三、如何制作自己的个性二维码
1、第一步。下载Php类库phpqrcode,(附下载地址:http://sourceforge.net/projects/phpqrcode/)
网上给出的使用案列是:
<?php /* $errorCorrectionLevel 纠错级别:L、M、Q、H $matrixPointSize表示图片每个黑点的像素 点的大小:1到10 */ include '/phpqrcode/phpqrcode.php';//引入PHP QR库文件 $value="个性化自己的二维码"; // 二维码数据 $errorCorrectionLevel = "l"; // 纠错级别:L、M、Q、H $matrixPointSize = "10"; // 点的大小:1到10 QRcode::png($value, false, $errorCorrectionLevel); exit; ?>
2、看懂上面的代码
上面那段代码发生了什么奇妙的旅程呢?
让我么打开phpqrcode.php看一看,代码太长了,就不贴了,各位自己下载去吧。
结合上面的代码和phpqrcode.php,看一看:
<?php /* $errorCorrectionLevel 纠错级别:L、M、Q、H $matrixPointSize表示图片每个黑点的像素 点的大小:1到10 */ include 'phpqrcode/phpqrcode.php'; //引入PHP QR库文件 $intext="个性化自己的二维码"; // 二维码数据 $errorCorrectionLevel = "l"; // 纠错级别:L、M、Q、H $matrixPointSize = "2"; // 点的大小:1到10 $margin = 1; $size = 10; $outfile = false; $saveandprint=false; $enc = QRencode::factory($errorCorrectionLevel, $size, $margin); //$enc->encodePNG($value, false, $saveandprint=false); try { ob_start(); $tab = $enc->encode($intext); print_r($tab); $err = ob_get_contents(); ob_end_clean(); if ($err != '') QRtools::log($outfile, $err); /*标记*/ $maxSize = (int)(QR_PNG_MAXIMUM_SIZE / (count($tab)+2*$enc->margin)); QRimage::png($tab, $outfile, min(max(1, $enc->size), $maxSize), $enc->margin,$saveandprint); } catch (Exception $e) { QRtools::log($outfile, $e->getMessage()); } exit; ?>
我们可以发现,php类库phpqrcode首先通过一种算法将我们需要的文字转化为数组$tab ,然后通过图像操作画了一张图片,也就是我们的二维码。
如果打印数组$tab,就会发现他就是这样的:
Array ( [0] => 1111111010101001001111111 [1] => 1000001001111001001000001 [2] => 1011101011100001101011101 [3] => 1011101011101110101011101 [4] => 1011101010011010001011101 [5] => 1000001000110111001000001 [6] => 1111111010101010101111111 [7] => 0000000000101111100000000 [8] => 1111001010110000110011101 [9] => 1010100010101110100111100 [10] => 1011011111111111111000111 [11] => 0010010011100000100001000 [12] => 0101111111101001100101100 [13] => 0100010111010111010001001 [14] => 0110101010110111010100001 [15] => 1001110110101100110111101 [16] => 0000101100110100111110000 [17] => 0000000011110101100010101 [18] => 1111111001010110101011010 [19] => 1000001001101100100010101 [20] => 1011101001100001111110001 [21] => 1011101010010110000000011 [22] => 1011101011000111011001110 [23] => 1000001011001010001001000 [24] => 1111111011000100100101111 )
好吧,你懂了吗…………
现在就简单了,根据数组$tab,画画就可以了:
QRimage::png($tab, $outfile, min(max(1, $enc->size), $maxSize), $enc->margin,$saveandprint);
3、如何画画
如果我们人人研究源码,会发现最关键的是这样一个方法:
private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4);
下面贴出我注释过的源码(原类库是没有注释的)
<?php function image($frame, $pixelPerPoint = 4, $outerFrame = 4){ //$frame就是数组$tab,$pixelPerPoint,$outerFrame现在看不出来是什么,待会解释 $h = count($frame); $w = strlen($frame[0]); //计算应该画多长多宽的画,$h表示高,$w表示宽 $imgW = $w + 2*$outerFrame; $imgH = $h + 2*$outerFrame; //它把画布变大了一点!说明$outerFrame是周围留白大小 $base_image =ImageCreate($imgW, $imgH); //imagecreate — 新建一个基于调色板的图像,换句话说,我们现在可以基于$base_image画画了 $col[0] = ImageColorAllocate($base_image,255,255,255); $col[1] = ImageColorAllocate($base_image,0,0,0); //imagecolorallocate — 为一幅图像分配颜色 //第一个参数是建立的,后面三个分别是R,G,B(大小都是从0到255),你可以理解为颜料……,三个颜料不同比例混合产生了不同的颜色,所以$col[0]就是白色的画笔啦,$col[1]是黑色的画笔(为什么三个255是白色,三个0是黑色,你可以想象一下中学物理里面白光可以分解的实验……) imagefill($base_image, 0, 0, $col[0]); //imagefill — 区域填充 ,整个画布上面都是白色的啊 for($y=0; $y<$h; $y++) { for($x=0; $x<$w; $x++) { if ($frame[$y][$x] == '1') { ImageSetPixel ($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]); } } } //通过两个循环,将$tab数组中的1填充为黑色,剩下的0为白 //$outerFrame表示留白 $target_image =ImageCreate($imgW * $pixelPerPoint, $imgH * $pixelPerPoint); //ImageCreate这个函数刚刚介绍过了,干嘛又调用…………而且大小是原来的$pixelPerPoint倍! //好吧,$pixelPerPoint是放大倍数,这里开始将刚刚生成的画按需放大(现在只是生成放大的画布) ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH); //imagecopyresized — 拷贝部分图像并调整大小 //将刚刚的画放大$pixelPerPoint倍之后复制到新建的画布里面 ImageDestroy($base_image); //imagedestroy — 销毁一图像 return $target_image; //返回生成的最后图像! }
4、自己的才是踏实的。
So…………
(1)可以将“黑点”变成彩色的点?变成爱心?,变成你女朋友的照片?变成文字?
(2)可以再图像中间部分加点东西,一个“爱”字,还是什么能够表达力心意的东西?
5、编写自己的方法
private static function myImage($frame, $pixelPerPoint = 4, $outerFrame = 4, $point, $centerPoint ){ /* * array $point 表示所填充的点的样式 * array $centerPoint 表示图片中间部分的样式 * $point = array ( 'kind'=>'',//col,img,word 'info'=>'' //rgb,filename ) * $centerPoint = array ( 'kind'=>'',//col,img,word 'info'=>'' ) * 没有编写完,但是思路是一样的 */ if($point['kind'] == 'col'){ $R1 = $point['info']['0']['R']; $G1 = $point['info']['0']['G']; $B1 = $point['info']['0']['B']; $R2 = $point['info']['1']['R']; $G2 = $point['info']['1']['G']; $B2 = $point['info']['1']['B']; $h = count($frame); $w = strlen($frame[0]); $imgW = $w + 2*$outerFrame; $imgH = $h + 2*$outerFrame; $base_image =ImageCreate($imgW, $imgH); $col[0] = ImageColorAllocate($base_image,$R1,$G1,$B1); $col[1] = ImageColorAllocate($base_image,$R2,$G2,$B2); imagefill($base_image, 0, 0, $col[0]); for($y=0; $y<$h; $y++) { for($x=0; $x<$w; $x++) { if ($frame[$y][$x] == '1') { ImageSetPixel ($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]); } } } //////////////////////x $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; }elseif($point['kind'] == 'img'){ function getSquare($image, $multi){ $imgW = imagesx($image); $imgH = imagesy($image); $imgMin = min($imgH,$imgW); $target_image =imagecreatetruecolor($imgMin,$imgMin); imagecopyresampled($target_image, $image, 0, 0, 0, 0, $imgMin , $imgMin, $imgW, $imgH); //ImageCopyResized($target_image, $image, 0, 0, 0, 0, $imgW * $multi, $imgH * $multi, $imgW, $imgH); $multi_image =imagecreatetruecolor($imgMin*$multi,$imgMin*$multi); imagecopyresampled($multi_image, $target_image, 0, 0, 0, 0, $imgMin*$multi,$imgMin*$multi, $imgMin, $imgMin); //ImageCopyResized($target_image, $image, 0, 0, 0, 0, $imgW * $multi, $imgH * $multi, $imgW, $imgH); ImageDestroy($image); return $multi_image; } function getSameSize($image,$pixelPerPoint){ $imgW = imagesx($image); $imgH = imagesy($image); $target_image =imagecreatetruecolor($pixelPerPoint,$pixelPerPoint); ImageCopyResized($target_image, $image, 0, 0, 0, 0, $pixelPerPoint , $pixelPerPoint, $imgW, $imgH); //ImageCopyResized($target_image, $image, 0, 0, 0, 0, $imgW * $multi, $imgH * $multi, $imgW, $imgH); ImageDestroy($image); return $target_image; } $h = count($frame); $w = strlen($frame[0]); $imgW = $w + 2*$outerFrame; $imgH = $h + 2*$outerFrame; $base_image =ImageCreate($imgW*$pixelPerPoint, $imgH*$pixelPerPoint); imagefill($base_image, 0, 0, ImageColorAllocate($base_image,255,255,255)); $pointimg = imagecreatefromjpeg ($point['info']); $newimg = getSquare($pointimg, 1); $newimgpoint = getSameSize($newimg,$pixelPerPoint); for($y=0; $y<$h; $y++) { for($x=0; $x<$w; $x++) { if ($frame[$y][$x] == '1') { imagecopyresampled($base_image, $newimgpoint, $y*$pixelPerPoint, $x*$pixelPerPoint, 0, 0, $pixelPerPoint, $pixelPerPoint, $pixelPerPoint, $pixelPerPoint); } } } return $base_image; }elseif($point['kind'] == 'word'){ }else{ $h = count($frame); $w = strlen($frame[0]); $imgW = $w + 2*$outerFrame; $imgH = $h + 2*$outerFrame; $base_image =ImageCreate($imgW, $imgH); $col[0] = ImageColorAllocate($base_image,255,255,255); $col[1] = ImageColorAllocate($base_image,0,0,0); imagefill($base_image, 0, 0, $col[0]); for($y=0; $y<$h; $y++) { for($x=0; $x<$w; $x++) { if ($frame[$y][$x] == '1') { ImageSetPixel ($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]); } } } //////////////////////x $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; } }
目前,不论企业还是个人网站,甚至连媒介平台都贴出了自己的二维码,一来可以迎合市场需求,二来可以获取众人眼球。正因二维码需求的不断扩张,市面上二维码生成器种类也越来越多。但是,多数二维码生成器生成的二维码为黑白色,外形都比较单一,没什么特色。若想追求个性,生成彩色二维码,可以看看芝麻网是怎么做到的。
我们在日常生活中见到最多的二维码生成器生成的二维码无非是右上、左上、左下各有一个规则正方形的矩阵式二维码,具有信息获取(文本、名片、地图、WIFI密码、网址、短信、视频)等功能,芝麻二维码生成器则不只局限于此。芝麻二维码生成器不仅可以通过输入文本、名片、网址、WIFI、地图、图片、MP3、芝麻号等信息生成二维码,而且可以依照用户喜好改变形状颜色甚至个性模板生成具有个性图案和色彩的二维码。
芝麻网生成二维码界面
如何在芝麻网生成彩色二维码
1、注册成为芝麻用户
2、选择文本、名片、网址、WIFI、地图、图片、MP3、芝麻号中的任一类型
3、填写待生成的内容生成二维码,可以选择普通二维码以及个性化模版。如若选择普通二维码可根据个人喜好选择喜欢的颜色,添加LOGO或是调整形状生成二维码;如若选择个性化模版则可选择喜欢的模版生成个性好玩的二维码,右侧可实时显示生成的二维码预览,最后可将生成的二维码下载到本地!
普通二维码
个性化模版
生成彩色二维码很简单,赶紧试试吧!钠)
现在网上生成器软件众多,但大多没什么新意,最近尝试了一下用芝麻网新出炉的二维码生成器,果然木有令我失望啊,该生成器可以随意的调整颜色和渐变方式,还能调整形状,加入logo,尤其是还可以选择个性化模版让二维码变得可爱灵动起来。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Gigabyte 마더보드에서 키보드 시작을 설정하는 방법 먼저, 키보드 시작을 지원해야 한다면 PS2 키보드여야 합니다! ! 설정 단계는 다음과 같습니다. 1단계: 부팅 후 Del 또는 F2를 눌러 BIOS에 들어가고, BIOS의 고급(Advanced) 모드로 들어갑니다. 일반 마더보드는 기본적으로 마더보드의 EZ(Easy) 모드로 들어갑니다. F7을 눌러 고급 모드로 전환합니다. ROG 시리즈 마더보드는 기본적으로 BIOS로 들어갑니다. 고급 모드(간체 중국어를 사용하여 설명) 2단계: - [고급] - [고급 전원 관리(APM)]를 선택합니다. [PS2 키보드로 깨우기] 옵션 찾기 4단계: 이 옵션 기본값은 비활성화입니다. 아래로 당기면 세 가지 다른 설정 옵션이 표시됩니다. 즉, 컴퓨터를 켜려면 [스페이스바]를 누르고 그룹을 누르세요.

Core i73770에 적합한 그래픽 카드는 무엇입니까? RTX3070은 뛰어난 성능과 첨단 기술을 갖춘 매우 강력한 그래픽 카드입니다. 게임을 하든, 그래픽을 렌더링하든, 기계 학습을 수행하든 RTX3070은 이를 쉽게 처리할 수 있습니다. NVIDIA의 Ampere 아키텍처를 사용하고 5888개의 CUDA 코어와 8GB의 GDDR6 메모리를 갖추고 있어 원활한 게임 경험과 고품질 그래픽 효과를 제공할 수 있습니다. RTX3070은 사실적인 빛과 그림자 효과를 표현할 수 있는 레이 트레이싱 기술도 지원합니다. 전체적으로 RTX3070은 고성능과 고품질을 추구하는 사람들에게 적합한 강력하고 진보된 그래픽 카드입니다. RTX3070은 NVIDIA 시리즈 그래픽 카드입니다. 2세대 NVID 사용

많은 친구들이 win10 시스템을 업데이트한 후 개인 설정을 열 수 없다는 것을 발견했습니다. 작업을 수행하려면 파일에 관련 프로그램이 없다고 계속 표시됩니다. winR을 사용하세요. "실행"을 열려면 마우스 오른쪽 버튼을 클릭하여 전체 ms-seeting을 삭제하고 열 수 있습니다. 자세한 내용을 함께 살펴보겠습니다. win10에서 개인 설정을 여는 방법 1. 먼저 "Win+R"을 눌러 실행을 호출하고 "services.msc"를 클릭하여 입력한 다음 Enter를 눌러 확인합니다. 2. 그런 다음 팝업 창에서 "windowsupdate"를 클릭하여 열고 시작 유형을 "비활성화"로 설정합니다. 3. 그런 다음 SoftwareDist를 C:\Windows에 넣습니다.

뮤지션에게 적합한 태블릿은? 화웨이 아이패드에 탑재된 12.9인치 스피커는 아주 좋은 제품이다. 4개의 스피커가 탑재되어 있으며 사운드도 훌륭합니다. 게다가 프로 시리즈에 속해 다른 스타일보다 조금 더 나은 모습을 보여준다. 전체적으로 아이패드 프로는 매우 좋은 제품입니다. 이 mini4 휴대폰의 스피커는 작고 효과는 평균입니다. 외부에서 음악을 재생하는 데 사용할 수 없으며 음악을 즐기려면 헤드폰을 사용해야 합니다. 음질이 좋은 헤드폰은 효과가 약간 더 좋지만 30~40위안의 값싼 헤드폰은 요구 사항을 충족할 수 없습니다. 전자피아노 음악을 들으려면 어떤 태블릿을 사용해야 할까요? 10인치보다 큰 아이패드를 구매하고 싶다면 헨레(Henle)와 피아스코어(Piascore)라는 두 가지 애플리케이션을 사용하는 것이 좋습니다. 헨레 제공

Windows 11의 Spotlight 기능은 바탕 화면 배경 화면, 테마 및 잠금 화면을 자동으로 업데이트하여 풍경, 도시, 동물 등의 아름다운 사진을 매일 제공합니다. 이러한 이미지는 모두 Bing 검색에서 가져온 것입니다. 이는 사용자 경험을 더욱 개인화할 뿐만 아니라 때때로 잠금 화면에 실용적인 제안과 팁을 표시하여 사용자에게 추가적인 놀라움과 도움을 선사합니다. Windows 11 Focus 데스크탑을 사용하는 방법 1: Windows Focus 데스크탑 배경화면 설정 1 Windows+I 단축키를 눌러 "설정"을 열고 "개인 설정" > "배경"을 선택합니다. 2 "배경 개인화" 드롭다운 목록에서 "Windows 초점" 옵션을 선택합니다. Windows 스포트라이트 배경화면 선택

1. PPT를 시작하고 새 빈 문서를 만든 다음 모든 텍스트 상자를 선택하고 삭제합니다. 2. Insert-Shape 명령을 실행하고 문서에서 직사각형을 드래그한 다음 도형을 검정색으로 채웁니다. 3. 직사각형을 드래그하여 늘린 다음, Insert-Shape 명령을 실행하고, 작은 정사각형을 드래그한 후 채우기 색상을 흰색으로 설정합니다. 4. 필름 양면에 상단과 하단이 고르게 분포되도록 작은 사각형을 하나씩 복사하여 붙여넣습니다. Ctrl+A로 모두 선택한 후 마우스 오른쪽 버튼을 클릭하고 그룹을 선택합니다. 5. 삽입-그림 명령을 실행하여 팝업 대화 상자에서 삽입할 그림을 찾아 클릭하여 열고 그림의 크기와 위치를 조정합니다. 6. 필름 사진을 만들기 위해 5단계를 반복하여 나머지 사진을 삽입하고 설정합니다. 7. 영화를 선택하고 애니메이션 추가 명령을 실행합니다.

모바일 엑셀 테이블 생성 튜토리얼 모바일 기기의 대중화와 기술의 지속적인 발전으로 인해 휴대폰은 일상생활과 업무에 없어서는 안 될 도구 중 하나가 되었습니다. 휴대폰에서 Excel 스프레드시트를 사용하면 데이터를 쉽게 기록, 계산, 분석할 수 있어 업무 효율성이 향상됩니다. 이 기사에서는 휴대폰에서 Excel 표를 만드는 기본 작업 및 기술을 공유합니다. 1. 적합한 애플리케이션을 선택하세요. GoogleSheets, Micro 등 선택할 수 있는 모바일 Excel 애플리케이션이 많이 있습니다.

토마토 소설 표지 만드는 법 토마토 소설에서만 단독 소설 표지를 만들 수 있는데, 대부분의 친구들은 토마토 소설 표지 만드는 법을 모릅니다. 다음은 에서 가져온 토마토 소설 표지 만드는 방법 사진입니다. 편집자가 플레이어에게 텍스트 튜토리얼을 전달합니다. 관심 있는 플레이어가 와서 살펴보세요! 토마토 소설 활용 튜토리얼 토마토 소설 표지 만드는 방법 1. 먼저 토마토 소설 APP을 열고 작품 관리 페이지에 들어가 새 책을 만든 후 아래 화살표와 같이 [표지 템플릿]을 선택합니다. 표지 템플릿 페이지에서 마음에 드는 표지 템플릿을 선택하세요. 3. 최종 표지 선택 후 오른쪽 상단의 [확인]을 클릭하세요.
