首页 > 其他分享 >Simple Qrcode

Simple Qrcode

时间:2024-06-21 17:10:28浏览次数:18  
标签:Simple 8859 QrCode 二维码 ISO Qrcode generate png

介绍

Simple QrCode 是基于Bacon/BaconQrCode 开发,适用于Laravel框架的软件包. 我们的目的是让二维码能更加便捷的使用在Laravel框架的项目里.

Example 1 Example 2

升级指南

从v2版本升到v3需要将 composer.json 文件中版本改为 ~3

如果你需要使用 png 文件格式,那么你必须安装 imagick PHP扩展.

配置

Composer安装

使用 composer require simplesoftwareio/simple-qrcode "~3" 安装软件包,

Laravel将会自动完成安装工作.

添加 Service Provider

Laravel <= 5.4

注册 SimpleSoftwareIO\QrCode\QrCodeServiceProvider::classconfig/app.phpproviders 数组里.

添加 Aliases

Laravel <= 5.4

最后,注册 'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::classconfig/app.phpaliases 数组里.

简例

显示视图

一个重要的应用是在页面中添加来源二维码.这样我们的用户就可以通过扫码返回初始页.我们只需要在 footer.blade.php 文件里添加如下代码即可!

<div class="visible-print text-center">
	{!! QrCode::size(100)->generate(Request::url()); !!}
	<p>扫我返回初始页</p>
</div>

嵌入二维码

你也可以嵌入二维码在你的邮件中,让收信的用户可以快速扫描.以下是在Laravel中实现的例子:

//Inside of a blade template.
<img src="{!!$message->embedData(QrCode::format('png')->generate('Embed me into an e-mail!'), 'QrCode.png', 'image/png')!!}">

使用说明

基本使用

使用QrCode的Generator非常方便. 多数情况下只要这样:

QrCode::generate('Make me into a QrCode!');

这就能创建一个内容是:"Make me into a QrCode!" 的二维码了.

生成 generate(string $data, string $filename = null)

Generate 是用来创建二维码的方法.

QrCode::generate('Make me into a QrCode!');

注意:要创建二维码必须使用此方法

Generate 默认返回一个 SVG 格式的图片文本. 你可以直接在Laravel 的 Blade页面 中使用,使用方式如下:

{!! QrCode::generate('Make me into a QrCode!'); !!}

generate 方法的第二个参数是指定要存储图片数据的文件地址及命名.

QrCode::generate('Make me into a QrCode!', '../public/qrcodes/qrcode.svg');

格式 format(string $format)

现支持 PNG,EPS,SVG 三种格式,设置方式如下:

QrCode::format('png');  //放回PNG图片
QrCode::format('eps');  //放回EPS图片
QrCode::format('svg');  //放回SVG图片

必须 imagick PHP扩展才能生成 png 图片.

尺寸 size(int $size)

QrCode 的 Generator 默认返回可能最小像素单位的二维码.

你可以使用 size 方法来设置二维码尺寸.下方是设置像素尺寸的方法:

QrCode::size(100);

200 像素 250 像素

颜色 color(int $red, int $green, int $blue, int $alpha = null)

注意改变颜色后,可能会导致某些设备难以识别.

颜色设置的格式必须是RGBA格式. 设置方式如下:

QrCode::color(255, 0, 0); // 红色二维码
QrCode::color(255, 0, 0, 25); //红色二维码+25%透明度

红色二维码 红色透明二维码

背景颜色 backgroundColor(int $red, int $green, int $blue, int $alpha = null)

你可以使用backgroundColor 方法来设置背景颜色.

QrCode::backgroundColor(255, 0, 0); // 红色背景二维码
QrCode::backgroundColor(255, 0, 0, 25); // 红色25%透明背景二维码

红色背景二维码 红色透明背景二维码

渐变 gradient($startRed, $startGreen, $startBlue, $endRed, $endGreen, $endBlue, string $type)

你可以使用 gradient 方法设置渐变.

支持以下渐变类型:

类型 范例
vertical垂直 垂直
horizontal水平 水平
diagonal对角 对角
inverse_diagonal反对角 反对角
radial迳向 迳向

定位颜色 eyeColor(int $eyeNumber, int $innerRed, int $innerGreen, int $innerBlue, int $outterRed = 0, int $outterGreen = 0, int $outterBlue = 0)

你可以使用 eyeColor 方法设置定位眼颜色.

数量 范例
0 Eye 0
1 Eye 1
2 Eye 2

风格 style(string $style, float $size = 0.5)

二维码风格可以轻易的使用 square, dotround来调换. 这将改变二维码中的信息块风格. 第二个参数是设置dot'点'的大小和round的圆度.

风格 范例
sqaure 方
dot 点
round 圆

定位眼风格 eyeStyle(string $style)

二维码定位眼支持2个格式, sqaure方 和 circle圆.

风格 范例
sqaure 方
circle 圆

边距 margin(int $margin)

也支持设置边距. 设置方式如下:

QrCode::margin(100);

容错级别

改变二维码的容错级别也很方便. 只要这么设置:

QrCode::errorCorrection('H');

下方是 errorCorrection 方法支持的容错级别设置.

容错级别 说明
L 7% 的字节码恢复率.
M 15% 的字节码恢复率.
Q 25% 的字节码恢复率.
H 30% 的字节码恢复率.

容错级别越高,二维码越大且能存储的数据越少. 详情见: error correction.

编码

QrCode 创建二维码时可以使用不同的编码. 默认使用 ISO-8859-1. 详情见 character encoding 你可以使用以下的任一种编码:

QrCode::encoding('UTF-8')->generate('Make me a QrCode with special symbols ♠♥!!');
编码
ISO-8859-1
ISO-8859-2
ISO-8859-3
ISO-8859-4
ISO-8859-5
ISO-8859-6
ISO-8859-7
ISO-8859-8
ISO-8859-9
ISO-8859-10
ISO-8859-11
ISO-8859-12
ISO-8859-13
ISO-8859-14
ISO-8859-15
ISO-8859-16
SHIFT-JIS
WINDOWS-1250
WINDOWS-1251
WINDOWS-1252
WINDOWS-1256
UTF-16BE
UTF-8
ASCII
GBK
EUC-KR

若抛出 Could not encode content to ISO-8859-1 意味着使用了错误的编码. 我们建议你使用 UTF-8.

合并 (string $filepath, float $percentage = .2, bool $absolute = false)

merge 方法可以让QrCode为生成结果加上图片. 常见的用法是在二维码上加Logo.

//生成中间有图片的二维码
QrCode::format('png')->merge('path-to-image.png')->generate();

//生成中间有图片的二维码,且图片占整个二维码图片的30%.
QrCode::format('png')->merge('path-to-image.png', .3)->generate();

//生成中间有图片的二维码,且图片占整个二维码图片的30%.
QrCode::format('png')->merge('http://www.google.com/someimage.png', .3, true)->generate();

merge 方法当前只支持PNG格式的图片
默认使用相对于应用程序的根路径,把第三个参数设置为 true 就能切换到使用绝对路径

为了让二维码保持高可识别度,建议在使用 merge 方法时把二维码的容错级别提高. 我们推荐使用: errorCorrection('H').

合并Logo

二进制合并 (string $content, float $percentage = .2)

mergeString 方法与 merge 方法类似, 不同的是它允许你使用一个二进制的String代替图片文件. 这在使用 Storage 存储时,会显得很方便. 它的参数与 merge 类似.

//生成中间有图片的二维码
QrCode::format('png')->mergeString(Storage::get('path/to/image.png'))->generate();

//生成中间有图片的二维码,且图片占整个二维码图片的30%.
QrCode::format('png')->mergeString(Storage::get('path/to/image.png'), .3)->generate();

merge 方法一样,当前只支持PNG格式. 同样建议将二维码的容错级别提高.

高级用法

所有的方法都支持链式调用. generate 方法必须在最后. 例如:

QrCode::size(250)->color(150,90,10)->backgroundColor(10,14,244)->generate('Make me a QrCode!');
QrCode::format('png')->size(399)->color(40,40,40)->generate('Make me a QrCode!');

你还能不存储图片,而使用 base64_encode 来将二进制数据直接显示成二维码图片.

<img src="data:image/png;base64, {!! base64_encode(QrCode::format('png')->size(100)->generate('Make me into an QrCode!')) !!} ">

助手模板

什么是助手模板?

助手模板生成一些简易二维码, 扫描二维码时会进行某些操作.

BitCoin比特币

这个模板生成可扫描二维码的来接受比特币支付. 详情

QrCode::BTC($address, $amount);

//发送0.334BTC到该地址
QrCode::BTC('bitcoin address', 0.334);

//发送0.334BTC到该地址和一些可选设置
QrCode::size(500)->BTC('address', 0.0034, [
    'label' => 'my label',
    'message' => 'my message',
    'returnAddress' => 'https://www.returnaddress.com'
]);

E-Mail

这个模板可以生成一个直接发E-mail的二维码.包含了发邮件的地址,标题,和内容

QrCode::email($to, $subject, $body);

//加入一个邮件地址
QrCode::email('[email protected]');

//加一个邮件地址、标题、内容至二维码.
QrCode::email('[email protected]', 'This is the subject.', 'This is the message body.');

//只加标题和内容.
QrCode::email(null, 'This is the subject.', 'This is the message body.');

位置

这个模板能创建一个包含一个经纬度的位置二维码, 并在谷歌地图或类似应用中打开.

QrCode::geo($latitude, $longitude);

QrCode::geo(37.822214, -122.481769);

手机号

这个模板能创建一个包含手机号的二维码, 并拨号.

QrCode::phoneNumber($phoneNumber);

QrCode::phoneNumber('555-555-5555');
QrCode::phoneNumber('1-800-Laravel');

短信

这个模板能创建能创建一个包含发送短信目标手机号和内容的二维码.

QrCode::SMS($phoneNumber, $message);

//创建一个只有手机号的短信二维码.
QrCode::SMS('555-555-5555');

//创建一个包含手机号和文字内容的短信二维码.
QrCode::SMS('555-555-5555', 'Body of the message');

WiFi

这个模板能创建扫一下能连接WIFI的二维码.

QrCode::wiFi([
	'encryption' => 'WPA/WEP',
	'ssid' => '网络的SSID',
	'password' => '网络的密码',
	'hidden' => '是否是一个隐藏SSID的网络'
]);

//连接一个开放的网络
QrCode::wiFi([
	'ssid' => '网络名称',
]);

//连接一个开放并隐藏的网络.
QrCode::wiFi([
	'ssid' => '网络名称',
	'hidden' => 'true'
]);

//连接一个加密的WIFI网络.
QrCode::wiFi([
	'ssid' => '网络名称',
	'encryption' => 'WPA',
	'password' => '密码'
]);

WIFI扫描目前苹果产品不支持.

QrCode 常规用法

你还能通过下面表中的前缀信息创建适合更多场合的二维码

QrCode::generate('http://www.simplesoftware.io');
使用场景 前缀 例子
网址 http:// http://www.simplesoftware.io
加密网址 https:// https://www.simplesoftware.io
E-mail 地址 mailto: mailto:[email protected]
电话号码 tel: tel:555-555-5555
文字短信 sms: sms:555-555-5555
文字短信内容 sms: sms::I am a pretyped message
文字短信同时附带手机号和短信内容 sms: sms:555-555-5555:I am a pretyped message
坐标 geo: geo:-78.400364,-85.916993
MeCard名片 mecard: MECARD:Simple, Software;Some Address, Somewhere, 20430;TEL:555-555-5555;EMAIL:[email protected];
VCard名片 BEGIN:VCARD 更多范例
Wifi wifi: wifi:WEP/WPA;SSID;PSK;Hidden(True/False)

在Laravel外的调用方式

你还可以在Laravel框架之外调用,只需要实例化 BaconQrCodeGenerator 类.

use SimpleSoftwareIO\QrCode\BaconQrCodeGenerator;

$qrcode = new BaconQrCodeGenerator;
$qrcode->size(500)->generate('Make a qrcode without Laravel!');

标签:Simple,8859,QrCode,二维码,ISO,Qrcode,generate,png
From: https://www.cnblogs.com/laraveler/p/18260937

相关文章

  • 实现一个简单的mybatis:SimpleMyBatis
    创建一个类似MyBatis的框架,主要涉及到几个关键部分:SQL语句的解析与存储,参数的绑定,以及最终的SQL执行。以下是一个简单的示例,使用Java、JDBC和SQLite数据库来实现:importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importja......
  • 一篇保姆级10分钟用PySimpleGUI做一个小软件
    使用Python和PySimpleGUI可以快速编写一个桌面软件.PySimpleGUI是一个简洁且功能强大的库,旨在让GUI编程变得更加直观和易用.下面是一个从零开始的完整示例,展示如何使用PySimpleGUI创建一个简单的软件.安装PySimpleGUI#首先,需要安装 PySimpleGUI 库pi......
  • SentencePiece: A simple and language independent subword tokenizer and detokeniz
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract 1Introduction 2SystemOverview  3LibraryDesign 3.1LosslessTokenization  3.2Efficientsubwordtrainingandsegmentation 3.3Vocabularyidmanagement 3.4Customi......
  • Java日期类Date、SimpleDateFormat 日期格式类、Calendar详细介绍
    目录一、Date类1.1Date类简单介绍1.2Date类的构造方法代码演示二、SimpleDateFormat日期格式化类2.1SimpleDateFormat日期格式化类简单介绍2.2构造方法代码演示日期格式化模板常用方法代码演示注意三、Calendar类3.1简单介绍3.2创建对象代码演示3.3静......
  • 【jmeter】使用beanshell simpler测试redis性能
    一、场景   由于redisdataset支持的类型有限,所以采取使用beanshellsampler 二、安装jedis包https://mvnrepository.com/artifact/redis.clients/jedis 三、添加BeanShellSampler添加脚本importjava.util.Map;importredis.clients.jedis.Jedis;importorg.a......
  • python快速生成二维码及读取二维码内容 pyqrcode MyQR pyzbar
    目录效果图生成二维码方式1:pyqrcode方式2:MyQR  读取二维码效果图生成二维码方式1:pyqrcode安装pipinstallpyqrcode代码实现importpyqrcode#text为保存在二维码的内容。text为完整链接时,扫描后可直接跳转到该链接text='https://www.baidu.com/'qr=pyqrc......
  • 简单工厂模式( Simple Factory Pattern )
    简单工厂模式(SimpleFactoryPattern),在工厂类中对象决定创建出哪一种产品类的实例。这些产品类都实现了相同的接口,或者继承了相同的父类。结构图Factory(工厂角色):它是核心,负责实现创建所有实例的内部逻辑。在工厂类中,提供了一个静态方法,可以直接被外界直接调用,以创建具体产品......
  • Paxos Made Simple
    1Introduction  Paxos算法是莱斯利·兰伯特(LeslieLamport)于1990年提出的一种基于消息传递且具有高度容错特性的共识(consensus)算法。《ThePart-TimeParliament》最早发表于1998年,Paxos岛上有一个议会,这个议会来决定岛上的法律,而法律是由议会通过的一系列的法令定义的。当议......
  • vits-simple-api搭建
    根据vits-simple-api中文文档指南自行搭建后端以下步骤均在windows平台cpu推理搭建为例选择你的vits模型(注意是vits!不是So-VitsBertVits2GptVits)建议去抱脸网搜索或者b站搜素以及自己训练.在vits-simple-api的路径的model目录下新建你下载模型的名字的文件夹将......
  • vue3 + arcgis.js4.x---线段SimpleLineSymbol
    //polylineconstpolylineGraphic=newGraphic()polylineGraphic.geometry={type:'polyline',paths:[[117.227239,31.820586],[116.227239,33.820586]]}polylineGraphic.symbol=newSimpleLineSymbol({color:'#ff0000&#......