PHP에서 로고가 포함된 QR코드를 생성하는 구현 방법

墨辰丷
풀어 주다: 2023-03-29 16:16:02
원래의
3008명이 탐색했습니다.

이 글에서는 로고가 포함된 QR 코드를 생성하는 데 일반적으로 사용되는 두 가지 구현 방법을 비교 소개합니다. 도움이 필요한 친구들은 필요에 따라 선택할 수 있습니다

1. phpqrcode. (php 라이브러리)

2. qrcode.js (javascript 라이브러리)

2. phpqrcode 사용

은 php 클래스 라이브러리만 사용합니다. 즉, QR코드 생성은 백그라운드에서 동작합니다. 배경에 로고가 있는 QR 코드를 생성하려면 먼저 로고 이미지를 서버에 업로드해야 합니다. (저는 업로드를 위해 webuploader를 사용했습니다.)

phpqrcode 사용 방법:

먼저 phpqrcode 다운로드: http://phpqrcode .sourceforge.net/

그런 다음 사용하기 전에 phpqrcode.php 파일을 소개하는 것을 잊지 마세요

$value = $url;//二维码内容 
$errorCorrectionLevel = 'L';//设置容错级别 
$matrixPointSize = $size;//生成图片大小 
QRcode::png($value, 'public_files'.DIRECTORY_SEPARATOR .'code'.DIRECTORY_SEPARATOR .'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2);//生成二维码图片 无logo
$logo = $tar_path;//上传至服务器的logo图片 
$QR = 'public_files'.DIRECTORY_SEPARATOR .'code'.DIRECTORY_SEPARATOR .'qrcode.png';//已经生成的原始二维码图
 
if ($logo !== FALSE) {
  $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图片宽度
  $logo_height = imagesy($logo);//logo图片高度
  $logo_qr_width = $QR_width / 5;
  $scale = $logo_width/$logo_qr_width;
  $logo_qr_height = $logo_height/$scale;
  $from_width = ($QR_width - $logo_qr_width) / 2;
  imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,
    $logo_qr_height, $logo_width, $logo_height);
}
$name = time();
imagepng($QR, 'public_files'.DIRECTORY_SEPARATOR .'code'.DIRECTORY_SEPARATOR .$name.'.png');//输出带logo的二维码图片
로그인 후 복사

3. qrcode.js 사용

프론트 엔드에서 QR 코드를 직접 생성하려면 먼저 필요합니다. jquery.qrcode.js를 다운로드하려면

qrcode 사용도 매우 간단합니다.

var length = size*80;//设置二维码大小
length = parseInt(length);
$("#code_img").qrcode({ //code_img是一个img标签的id
  render : "canvas",  //设置渲染方式,有table和canvas,使用canvas方式渲染性能相对来说比较好
  text : url,  //扫描二维码后显示的内容,可以直接填一个网址,扫描二维码后自动跳向该链接
  width : length,       //二维码的宽度
  height : length,
  background : "#ffffff",    //二维码的后景色
  foreground : "#000000",    //二维码的前景色
  src: $('#image').attr('src')       //二维码中间的图片
});
로그인 후 복사

jquery.qrcode.js를 소개하고 이 js 코드를 직접 작성하면 실행 후 QR 코드가 표시되고 처리될 수 있습니다

입니다. 주로 QR 코드 중간에 로고 참조 형식이 있는데 일반적으로 로컬 이미지에는 두 가지 형식이 있습니다. 하나는 로컬 URL이고 다른 하나는 이미지를 base64 형식으로 변환하는 것입니다

처음에는 로컬을 시도했습니다. 이미지를 참조하기 위한 URL 형식을 사용했는데, js 파일과 동일한 디렉터리에 있는 이미지만 참조할 수 있다는 것을 알았기 때문에 로컬 URL 형식은 지원되지 않으므로 후자의 방법을 채택했습니다.

을 사용하여 로컬 이미지를 업로드하고 선택한 다음 base64 형식을 사용하여

var input = document.getElementById("file_input");
 
if(typeof FileReader==='undefined'){
  input.setAttribute('disabled','disabled');
}else{
  input.addEventListener('change',readFile,false);
}
 
function readFile(){
  var file = this.files[0];
  if(!/image\/\w+/.test(file.type)){
    alert("文件必须为图片!");
    return false;
  }
  var reader = new FileReader();
  reader.readAsDataURL(file);
  reader.onload = function(e){
    $('#image').attr('src',this.result);//image为img标签的id
  }
}
로그인 후 복사

파일을 다음과 같이 읽습니다. 문자열 데이터 URL 문자열, 특수 형식의 URL 주소가 있는 페이지로 작은 파일을 직접 읽습니다. 이 특별한 형식은 base64입니다

3. 두 클래스 라이브러리의 비교

두 클래스 라이브러리 중 하나는 백그라운드에서 작동하고 다른 하나는 프런트 엔드에서 직접 작동합니다.

phpqrcode는 QR 코드를 생성하여 백그라운드에서 작동하며, 생성된 이미지는 서버에 저장됩니다. 일반적으로 생성된 QR코드는 로컬에 직접 저장되었다가 직접 서버에 가서 두 번째로 획득하는 경우가 거의 없습니다. 따라서 phpqrcode를 사용하면 서버에 이미지가 쌓이게 되어 불필요한 공간을 차지하게 됩니다. 공간을 확보하고 삭제하면 추가 비용이 발생합니다. 따라서 phpqrcode를 사용하는 것은 이 QR 코드 생성 도구에 적합하지 않습니다. 게다가 이미지를 업로드하면 불필요한 오버헤드도 발생합니다

qrcode.js는 프런트엔드에서 직접 작동합니다. 업로드된 이미지는 브라우저에 직접 저장되며 QR 코드는 백그라운드 개입 없이 프런트엔드에서 직접 생성되므로 불필요한 오버헤드가 줄어듭니다. . 서버에 사진이 쌓이지 않고 불필요한 공간을 차지하지 않습니다.

요약: 위 내용이 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

관련 권장 사항:

php

json 파일을 읽고, 쓰고, 수정하는 방법

php

특정 비디오 프레임을 이미지로 가로채는 방법PHP 정규 표현식의 기본 항목

위 내용은 PHP에서 로고가 포함된 QR코드를 생성하는 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!