58 lines
1.6 KiB
Lua
58 lines
1.6 KiB
Lua
-- qr_code.lua
|
|
-- Generates and prints a QR code for a given text using luaqrcode
|
|
|
|
-- Include the QR Code library
|
|
local qrencode = dofile("/assets/qrencode.lua")
|
|
|
|
-- Text to encode (using lowercase as per your request)
|
|
local text = 'https://developer.espressif.com/tags/lua'
|
|
|
|
-- Generate the QR code
|
|
local ok, tab_or_message = qrencode.qrcode(text)
|
|
if not ok then
|
|
print("Error generating QR code: " .. tab_or_message)
|
|
return
|
|
end
|
|
|
|
local function matrix_to_string(tab, padding, padding_char, white_pixel, black_pixel)
|
|
padding = padding or 1
|
|
white_pixel = white_pixel or ' '
|
|
black_pixel = black_pixel or '██'
|
|
padding_char = padding_char or white_pixel
|
|
|
|
local str_tab = {} -- Hold each row of the QR code in a table
|
|
|
|
-- Add padding rows at the top
|
|
for i = 1, padding do
|
|
table.insert(str_tab, string.rep(padding_char, #tab + 2 * padding))
|
|
end
|
|
|
|
for y = 1, #tab do
|
|
local line = string.rep(padding_char, padding)
|
|
for x = 1, #tab do
|
|
if tab[x][y] > 0 then
|
|
line = line .. black_pixel
|
|
else
|
|
line = line .. white_pixel
|
|
end
|
|
end
|
|
line = line .. string.rep(padding_char, padding)
|
|
table.insert(str_tab, line)
|
|
end
|
|
|
|
-- Add padding rows at the bottom
|
|
for i = 1, padding do
|
|
table.insert(str_tab, string.rep(padding_char, #tab + 2 * padding))
|
|
end
|
|
|
|
return str_tab
|
|
end
|
|
|
|
-- Convert the QR code matrix to a string
|
|
local qr_lines = matrix_to_string(tab_or_message)
|
|
|
|
-- Print the QR code
|
|
print("QR Code for: " .. text)
|
|
for _, line in ipairs(qr_lines) do
|
|
print(line)
|
|
end
|