QrGen / app.py
Kvikontent's picture
Update app.py
e992434
raw
history blame
1.75 kB
import gradio as gr
import qrcode
def generate_qr_code(url, gradient_color1, gradient_color2, logo, qr_color):
# Create QR code instance
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
# Add URL to the QR code
qr.add_data(url)
qr.make(fit=True)
# Create the QR code image
qr_image = qr.make_image(fill_color=qr_color, back_color="#ffffff") # Set QR code color here
# Add gradient if colors are provided
if gradient_color1 and gradient_color2:
qr_image = qr_image.convert("RGB")
qr_image = qr_image.resize((500, 500))
gradient = Image.new("RGB", qr_image.size)
grad = ImageDraw.Gradient(grad.size, "LR", gradient_color1, gradient_color2)
qr_image = Image.blend(qr_image, gradient, 0.5)
# Add logo if provided
if logo:
logo_image = Image.open(logo).convert("RGBA")
qr_image.paste(logo_image, (125, 125), logo_image)
# Save the QR code to a byte stream
qr_byte_stream = io.BytesIO()
qr_image.save(qr_byte_stream, format="PNG")
qr_byte_stream.seek(0)
return qr_byte_stream.read()
inputs = [
gr.inputs.Textbox(label="URL to Site"),
gr.inputs.ColorPicker(label="Gradient Color 1 (Optional)"),
gr.inputs.ColorPicker(label="Gradient Color 2 (Optional)"),
gr.inputs.Image(label="Logo (Optional)"),
gr.inputs.ColorPicker(label="QR Code Color"),
]
outputs = gr.outputs.Image(type="bytes")
gr.Interface(
fn=generate_qr_code,
inputs=inputs,
outputs=outputs,
title="QR Code Generator",
description="Generate QR codes with customizable options",
theme="huggingface",
).launch()