Sample code for 30+ languages & platforms
Lua Requires Chilkat v11.7.0+

QR Codes for Email, Phone, SMS and Location

See more QR Code Examples

Demonstrates QR codes that start an action on a phone. A QR code only holds text, and what happens on scanning depends on the form of that text: mailto: starts an email, tel: dials a number, SMSTO: starts a text message, and geo: opens a map at a latitude and longitude. A web address opens in the browser.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.

local fmt = chilkat.Formats.new()
local json = chilkat.JsonObject.new()
local jsonOut = chilkat.JsonObject.new()
json:update_int("render.moduleSize", 6)
json:update_bool("output.overwrite", true)
json:update_string("output.return", "none")

-- An email, with the address and optionally a subject.  Spaces in the subject are written %20.
json:update_string("payload.text", "mailto:support@example.com?subject=Order%2012345")
json:update_string("output.path", "qa_output/qr_email.png")
local success = fmt:qr_code("generate", json, jsonOut)
if not success then
    print(fmt.last_error_text)
    return
end

print("email: version " .. jsonOut:int_of("symbols[0].selectedEncoding.version") .. ", " .. jsonOut:string_of("outputs[0].path"))

-- image

-- A phone number to dial, in international form.
json:update_string("payload.text", "tel:+15555550100")
json:update_string("output.path", "qa_output/qr_phone.png")
success = fmt:qr_code("generate", json, jsonOut)
if not success then
    print(fmt.last_error_text)
    return
end

print("phone: version " .. jsonOut:int_of("symbols[0].selectedEncoding.version") .. ", " .. jsonOut:string_of("outputs[0].path"))

-- image

-- A text message: the number, then the message.
json:update_string("payload.text", "SMSTO:+15555550100:Please call me back")
json:update_string("output.path", "qa_output/qr_sms.png")
success = fmt:qr_code("generate", json, jsonOut)
if not success then
    print(fmt.last_error_text)
    return
end

print("sms: version " .. jsonOut:int_of("symbols[0].selectedEncoding.version") .. ", " .. jsonOut:string_of("outputs[0].path"))

-- image

-- A location: latitude, then longitude, in degrees.
json:update_string("payload.text", "geo:41.8781,-87.6298")
json:update_string("output.path", "qa_output/qr_location.png")
success = fmt:qr_code("generate", json, jsonOut)
if not success then
    print(fmt.last_error_text)
    return
end

print("location: version " .. jsonOut:int_of("symbols[0].selectedEncoding.version") .. ", " .. jsonOut:string_of("outputs[0].path"))

-- image

-- Sample output:

-- email: version 4, qa_output/qr_email.png
-- phone: version 2, qa_output/qr_phone.png
-- sms: version 3, qa_output/qr_sms.png
-- location: version 2, qa_output/qr_location.png