찾다
백엔드 개발PHP 튜토리얼个性化自己的二维码,个性化自己二维码_PHP教程

个性化自己的二维码,个性化自己二维码_PHP教程

Jul 13, 2016 am 10:21 AM
하나개인화무엇만들다어떻게우리를암호소유하다소유하다

个性化自己的二维码,个性化自己二维码

一、什么是二维码

 

二、我们如何制作二维码

 

三、如何制作自己的个性二维码

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 &mdash; 新建一个基于调色板的图像,换句话说,我们现在可以基于$base_image画画了
	$col[0] = ImageColorAllocate($base_image,255,255,255);
	$col[1] = ImageColorAllocate($base_image,0,0,0);
	//imagecolorallocate &mdash; 为一幅图像分配颜色
	//第一个参数是建立的,后面三个分别是R,G,B(大小都是从0到255),你可以理解为颜料&hellip;&hellip;,三个颜料不同比例混合产生了不同的颜色,所以$col[0]就是白色的画笔啦,$col[1]是黑色的画笔(为什么三个255是白色,三个0是黑色,你可以想象一下中学物理里面白光可以分解的实验&hellip;&hellip;)
	imagefill($base_image, 0, 0, $col[0]);
	//imagefill &mdash; 区域填充 ,整个画布上面都是白色的啊
	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这个函数刚刚介绍过了,干嘛又调用&hellip;&hellip;&hellip;&hellip;而且大小是原来的$pixelPerPoint倍!
	//好吧,$pixelPerPoint是放大倍数,这里开始将刚刚生成的画按需放大(现在只是生成放大的画布)
	ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH);
	//imagecopyresized &mdash; 拷贝部分图像并调整大小 
	//将刚刚的画放大$pixelPerPoint倍之后复制到新建的画布里面
	ImageDestroy($base_image);
	//imagedestroy &mdash; 销毁一图像 
	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,尤其是还可以选择个性化模版让二维码变得可爱灵动起来。
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/860061.htmlTechArticle个性化自己的二维码,个性化自己二维码 一、什么是二维码 二、我们如何制作二维码 三、如何制作自己的个性二维码 1、第一步。下载P...
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
과대 광고 : 오늘 PHP의 역할을 평가합니다과대 광고 : 오늘 PHP의 역할을 평가합니다Apr 12, 2025 am 12:17 AM

PHP는 현대적인 프로그래밍, 특히 웹 개발 분야에서 강력하고 널리 사용되는 도구로 남아 있습니다. 1) PHP는 사용하기 쉽고 데이터베이스와 완벽하게 통합되며 많은 개발자에게 가장 먼저 선택됩니다. 2) 동적 컨텐츠 생성 및 객체 지향 프로그래밍을 지원하여 웹 사이트를 신속하게 작성하고 유지 관리하는 데 적합합니다. 3) 데이터베이스 쿼리를 캐싱하고 최적화함으로써 PHP의 성능을 향상시킬 수 있으며, 광범위한 커뮤니티와 풍부한 생태계는 오늘날의 기술 스택에 여전히 중요합니다.

PHP의 약한 참고 자료는 무엇이며 언제 유용합니까?PHP의 약한 참고 자료는 무엇이며 언제 유용합니까?Apr 12, 2025 am 12:13 AM

PHP에서는 약한 참조가 약한 회의 클래스를 통해 구현되며 쓰레기 수집가가 물체를 되 찾는 것을 방해하지 않습니다. 약한 참조는 캐싱 시스템 및 이벤트 리스너와 같은 시나리오에 적합합니다. 물체의 생존을 보장 할 수 없으며 쓰레기 수집이 지연 될 수 있음에 주목해야합니다.

PHP의 __invoke 마법 방법을 설명하십시오.PHP의 __invoke 마법 방법을 설명하십시오.Apr 12, 2025 am 12:07 AM

\ _ \ _ 호출 메소드를 사용하면 객체를 함수처럼 호출 할 수 있습니다. 1. 객체를 호출 할 수 있도록 메소드를 호출하는 \ _ \ _ 정의하십시오. 2. $ obj (...) 구문을 사용할 때 PHP는 \ _ \ _ invoke 메소드를 실행합니다. 3. 로깅 및 계산기, 코드 유연성 및 가독성 향상과 같은 시나리오에 적합합니다.

동시성에 대해 PHP 8.1의 섬유를 설명하십시오.동시성에 대해 PHP 8.1의 섬유를 설명하십시오.Apr 12, 2025 am 12:05 AM

섬유는 PHP8.1에 도입되어 동시 처리 기능을 향상시켰다. 1) 섬유는 코 루틴과 유사한 가벼운 동시성 모델입니다. 2) 개발자는 작업의 실행 흐름을 수동으로 제어 할 수 있으며 I/O 집약적 작업을 처리하는 데 적합합니다. 3) 섬유를 사용하면보다 효율적이고 반응이 좋은 코드를 작성할 수 있습니다.

PHP 커뮤니티 : 자원, 지원 및 개발PHP 커뮤니티 : 자원, 지원 및 개발Apr 12, 2025 am 12:04 AM

PHP 커뮤니티는 개발자 성장을 돕기 위해 풍부한 자원과 지원을 제공합니다. 1) 자료에는 공식 문서, 튜토리얼, 블로그 및 Laravel 및 Symfony와 같은 오픈 소스 프로젝트가 포함됩니다. 2) 지원은 StackoverFlow, Reddit 및 Slack 채널을 통해 얻을 수 있습니다. 3) RFC에 따라 개발 동향을 배울 수 있습니다. 4) 적극적인 참여, 코드에 대한 기여 및 학습 공유를 통해 커뮤니티에 통합 될 수 있습니다.

PHP vs. Python : 차이점 이해PHP vs. Python : 차이점 이해Apr 11, 2025 am 12:15 AM

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

PHP : 죽어 가거나 단순히 적응하고 있습니까?PHP : 죽어 가거나 단순히 적응하고 있습니까?Apr 11, 2025 am 12:13 AM

PHP는 죽지 않고 끊임없이 적응하고 진화합니다. 1) PHP는 1994 년부터 새로운 기술 트렌드에 적응하기 위해 여러 버전 반복을 겪었습니다. 2) 현재 전자 상거래, 컨텐츠 관리 시스템 및 기타 분야에서 널리 사용됩니다. 3) PHP8은 성능과 현대화를 개선하기 위해 JIT 컴파일러 및 기타 기능을 소개합니다. 4) Opcache를 사용하고 PSR-12 표준을 따라 성능 및 코드 품질을 최적화하십시오.

PHP의 미래 : 적응 및 혁신PHP의 미래 : 적응 및 혁신Apr 11, 2025 am 12:01 AM

PHP의 미래는 새로운 기술 트렌드에 적응하고 혁신적인 기능을 도입함으로써 달성 될 것입니다. 1) 클라우드 컴퓨팅, 컨테이너화 및 마이크로 서비스 아키텍처에 적응, Docker 및 Kubernetes 지원; 2) 성능 및 데이터 처리 효율을 향상시키기 위해 JIT 컴파일러 및 열거 유형을 도입합니다. 3) 지속적으로 성능을 최적화하고 모범 사례를 홍보합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경