import gradio as gr import qrcode from PIL import Image def generate_qr(text): if not text or text.strip() == "": return None try: qr = qrcode.QRCode( version=1, box_size=10, border=5 ) qr.add_data(text) qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white") # 🔥 IMPORTANT FIX: convert to pure PIL Image img = img.convert("RGB") return img except Exception as e: print("ERROR:", e) # shows in logs return None with gr.Blocks() as demo: gr.Markdown("# 🔳 QR Code Generator") text_input = gr.Textbox( placeholder="Enter text or URL...", label="Input Data" ) btn = gr.Button("Generate QR") qr_output = gr.Image(type="pil", label="QR Code") btn.click( fn=generate_qr, inputs=text_input, outputs=qr_output ) demo.launch()