Spaces:
Running
Running
import qrcode | |
from PIL import Image | |
import gradio as gr | |
# Function to generate QR code with a logo | |
def generate_qr_with_logo(data: str, logo_path: str): | |
# Create the QR code | |
qr = qrcode.QRCode( | |
version=1, | |
error_correction=qrcode.constants.ERROR_CORRECT_H, # High error correction for logo | |
box_size=10, | |
border=4, | |
) | |
qr.add_data(data) | |
qr.make(fit=True) | |
# Create an image for the QR code | |
img_qr = qr.make_image(fill='black', back_color='white') | |
# Open the logo image | |
logo = Image.open(logo_path) # Provide logo path | |
logo_size = 50 # Adjust size of the logo | |
logo = logo.resize((logo_size, logo_size)) | |
# Get QR code dimensions | |
qr_width, qr_height = img_qr.size | |
# Calculate logo position to center it | |
logo_x = (qr_width - logo_size) // 2 | |
logo_y = (qr_height - logo_size) // 2 | |
# Paste the logo onto the QR code | |
img_qr.paste(logo, (logo_x, logo_y), logo) | |
# Save and return the final QR code with logo | |
output_path = "qr_with_logo.png" | |
img_qr.save(output_path) | |
return output_path | |
# Gradio Interface | |
def qr_code_interface(data: str, logo_path: str): | |
result = generate_qr_with_logo(data, logo_path) | |
return result | |
# Create a Gradio interface | |
interface = gr.Interface( | |
fn=qr_code_interface, | |
inputs=[ | |
gr.Textbox(label="Enter Data for QR Code", placeholder="Enter URL or text here..."), | |
gr.File(label="Upload Logo", type="file") # File input for the logo | |
], | |
outputs=gr.Image(type="file", label="Generated QR Code with Logo"), | |
description="Generate a QR Code with your custom logo placed in the center. You can provide any text or URL as data and upload an image to be used as the logo.", | |
css="footer {visibility: hidden}" | |
) | |
# Launch the Gradio app | |
interface.launch() | |