MK-316's picture
Update app.py
4cd2cb0 verified
raw
history blame
1.59 kB
import gradio as gr
import pyqrcode
from PIL import Image, ImageDraw, ImageFont
import io
def generate_qr_code(url, title):
# Generate QR code using pyqrcode
qr = pyqrcode.create(url)
buffer = io.BytesIO()
qr.png(buffer, scale=10)
buffer.seek(0)
qr_image = Image.open(buffer)
# Prepare to add title to the image
image_width = qr_image.width
image_height = qr_image.height + 70 # Additional space for title
# Create a new image with white background
result_image = Image.new('RGB', (image_width, image_height), 'white')
result_image.paste(qr_image, (0, 70))
# Prepare to draw the title
draw = ImageDraw.Draw(result_image)
font = ImageFont.truetype("dejavu-sans-bold.ttf", 24)
# Correctly using textsize to get dimensions of the text
text_width, text_height = font.getsize(title)
# Calculate the text's position (centered)
text_x = (image_width - text_width) // 2
text_y = 20 # Adjust as necessary
draw.text((text_x, text_y), title, font=font, fill='black')
return result_image
# Create the Gradio interface
iface = gr.Interface(
fn=generate_qr_code,
inputs=[
gr.Textbox(label="Enter URL", placeholder="Type or paste URL here..."),
gr.Textbox(label="Enter Title for QR Code", placeholder="Type the title here...")
],
outputs=gr.Image(label="QR Code Image", type="pil", format="png"),
title="QR Code Generator",
description="Enter a URL and a title to generate a QR Code. The title and the QR Code will be displayed in the same image."
)
iface.launch()