|
import qrcode |
|
from PIL import Image |
|
import gradio as gr |
|
|
|
|
|
def generate_qr_with_logo(data: str, logo_path: str): |
|
|
|
qr = qrcode.QRCode( |
|
version=1, |
|
error_correction=qrcode.constants.ERROR_CORRECT_H, |
|
box_size=10, |
|
border=4, |
|
) |
|
qr.add_data(data) |
|
qr.make(fit=True) |
|
|
|
|
|
img_qr = qr.make_image(fill='black', back_color='white') |
|
|
|
|
|
logo = Image.open(logo_path) |
|
logo_size = 50 |
|
logo = logo.resize((logo_size, logo_size)) |
|
|
|
|
|
qr_width, qr_height = img_qr.size |
|
|
|
|
|
logo_x = (qr_width - logo_size) // 2 |
|
logo_y = (qr_height - logo_size) // 2 |
|
|
|
|
|
img_qr.paste(logo, (logo_x, logo_y), logo) |
|
|
|
|
|
output_path = "qr_with_logo.png" |
|
img_qr.save(output_path) |
|
|
|
return output_path |
|
|
|
|
|
def qr_code_interface(data: str, logo_path: str): |
|
result = generate_qr_with_logo(data, logo_path) |
|
return result |
|
|
|
|
|
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") |
|
], |
|
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}" |
|
) |
|
|
|
|
|
interface.launch() |
|
|