nmzh_lab_qrcode / app.py
nikzarifie's picture
Update app.py
5782cdf verified
import qrcode
import gradio as gr
from io import BytesIO
from PIL import Image
def generate_vcard(name, contact_number, email, designation, work_address):
# Format the information as a vCard
vcard = f"""
BEGIN:VCARD
VERSION:3.0
FN:{name}
TEL;TYPE=WORK,VOICE:{contact_number}
EMAIL;TYPE=PREF,INTERNET:{email}
TITLE:{designation}
ADR;TYPE=WORK:;;{work_address}
END:VCARD
"""
# Generate the QR code
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(vcard)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
# Save the image to a BytesIO object
buffer = BytesIO()
img.save(buffer, format="PNG")
buffer.seek(0)
# Convert the BytesIO object to an Image
return Image.open(buffer)
# Create the Gradio interface
iface = gr.Interface(
fn=generate_vcard,
inputs=[
gr.Textbox(label="Name"),
gr.Textbox(label="Contact Number"),
gr.Textbox(label="Email"),
gr.Textbox(label="Designation"),
gr.Textbox(label="Work Address")
],
outputs=gr.Image(type="pil"),
title="QR Code Generator for vCard",
description="Fill in your details and generate a QR code containing your information in vCard format."
)
# Launch the interface
iface.launch()