MK-316's picture
Update app.py
8319bcd verified
raw
history blame
1.82 kB
import gradio as gr
import pyqrcode
from PIL import Image, ImageDraw, ImageFont
import io
from PIL import Image, ImageDraw, ImageFont
import io
import pyqrcode
def generate_qr_code(url, title):
# Generate QR code
qr = pyqrcode.create(url)
buffer = io.BytesIO()
qr.png(buffer, scale=10)
# Move to the beginning of the StringIO buffer
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 # Add 70 pixels space for title
# Create a new image with white background
result_image = Image.new('RGB', (image_width, image_height), 'white')
# Paste the QR code onto this new image
result_image.paste(qr_image, (0, 70))
# Draw the title on the image
draw = ImageDraw.Draw(result_image)
font = ImageFont.truetype("dejavu-sans-bold.ttf", 24) # Ensure your font path is correct
# Correctly using textsize to get dimensions of the text
text_width, text_height = draw.textsize(title, font=font)
# 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()