File size: 1,824 Bytes
5e49b63
 
 
 
 
8319bcd
 
 
 
5e49b63
8319bcd
5e49b63
 
 
8319bcd
 
5e49b63
 
8319bcd
5e49b63
 
8319bcd
 
5e49b63
 
8319bcd
5e49b63
8319bcd
 
5e49b63
8319bcd
 
4cd2cb0
8319bcd
 
4cd2cb0
 
 
 
8319bcd
5e49b63
 
4cd2cb0
8319bcd
5e49b63
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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()