ruby生成二维码:ruby on qrcode

介绍

rqrcode 是一个用于生成 QR 码的 Ruby 库。它可以创建多种格式的二维码,并允许你将其嵌入到 Web 应用程序、电子邮件或文档中。rqrcode 通常用于 Rails 应用程序中,当需要生成二维码(例如,用于支付链接、票据或验证码)时非常方便。

安装

gem 'rqrcode'

入门案例

require 'rqrcode'

# 生成一个简单的二维码
qr = RQRCode::QRCode.new("https://example.com")

puts qr.to_s

高级选项

在将url生成为二维码时,我们可以指定一些高级选项来定义生成的二维码格式

选项说明
data需要被编码为二维码的数据,通常是url
size二维码的大小,默认会根据数据的长度自动选择最小的尺寸
max_size二维码允许的最大尺寸
level二维码的纠错级别,表示二维码受损时可以恢复的程度。从低到高分别是:l、:m、:q、:h
model二维码的编码模式:number:仅适用于纯数字数据。:alphanumeric:适用于字母和数字的组合(默认):byte_8bit:适用于8位字节数据,如一般的字符串(也是默认的)。:kanji:适用于日文的汉字编码。

使用方法如下:

simple_qrcode = RQRCodeCore::QRCode.new("https://kyan.com", size: 2, level: :m, mode: :byte_8bit)

渲染方式

rqrcode 中生成二维码时,提供了多种选项来定制生成的二维码样式和格式。不同的方法(如 as_svgas_png)支持不同的选项

png

选项说明示例/默认值
offset设置二维码和图像边缘之间的距离offset: 10
color设置二维码的颜色。颜色以16进制格式表示,或者默认字符color: ‘black’
module_px_size每个二维码模块(方块)的大小,单位为像素module_px_size: 6
resize_exactly_to设置二维码是否应该被精确调整为 size 指定的尺寸(不推荐,可能使二维码失去比例)resize_exactly_to: true
file生成二维码同时保存到本地resize_exactly_to:nil
fill填充颜色fill:’while‘
resize_gte_to是否允许自动缩放resize_gte_to: false
color_mode设置图像的颜色模式。通常为 ChunkyPNG::COLOR_GRAYSCALE(灰度模式)或 ChunkyPNG::COLOR_TRUECOLOR(真彩模式)。color_mode: ChunkyPNG::COLOR_GRAYSCALE
border_modules设置二维码外边框的宽度,表示边缘宽度。默认值为 4。border_modules: 4
bit_depth设置图像的位深度。通常可以设置为 1 表示黑白图像(最常用)bit_depth: 1
def show
    qrcode =RQRCode::QRCode.new("https://www.baidu.com/")
    option = {
      	size: 200,
      	border_modules: 4,
      	color: 'black',
      	fill: 'white'
     }
  	png = qrcode.as_png(option)
end

svg

选项说明实例/默认值
offset设置二维码和图像边缘之间的距离offset: 10
fill填充颜色fill:’while‘
color设置二维码的颜色。颜色以16进制格式表示,或者默认字符color: ‘black’
module_size每个二维码模块(方块)的大小,单位为像素module_px_size: 6
shape_rendering处理边缘和形状,不建议使用,会影响二维码识别性shape_rendering:‘auto’
standalone生成 SVG 图像时指示是否将其作为独立的文件输出,包含完整的 XML 声明和文档类型定义standalone: true
def show
    qrcode =RQRCode::QRCode.new("https://www.baidu.com/")
    option = {
      	border_modules: 4,
      	color: 'black',
      	fill: 'white'
     }
  	svg = qrcode.as_svg(option)
end

base64

官方并未提供base64方法,因此需要使用一些工具

def show
    qrcode =RQRCode::QRCode.new("https://www.baidu.com/")
    option = {
      	size: 200,
      	border_modules: 4,
      	color: 'black',
      	fill: 'white'
     }
  	png = qrcode.as_png(option)
    base64_png = Base64.strict_encode64(png.to_s)
    @base64_image = "data:image/png;base64,#{base64_png}"
end

渲染带二维码的logo

def show
    qrcode = RQRCode::QRCode.new("https://www.baidu.com/")

    png = qrcode.as_png(
      size: 300,
      border_modules: 4,
      color: 'black',
      fill: 'white'
    )
    
    # 读取png图片
    logo = ChunkyPNG::Image.from_file('lib/images/logo.png')
    logo_size = 60
    logo_resized = logo.resize(logo_size, logo_size) 

    # logo和二维码合并
    qr_image = ChunkyPNG::Image.from_blob(png.to_s)
    qr_image.compose!(logo_resized, (qr_image.width - logo_resized.width) / 2, (qr_image.height - logo_resized.height) / 2)

    base64_png = Base64.strict_encode64(qr_image.to_s)
    @base64_image = "data:image/png;base64,#{base64_png}"
  end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值