File size: 1,959 Bytes
40722f2
 
 
 
 
 
41d5d66
40722f2
 
 
 
 
 
 
 
 
 
 
41d5d66
 
40722f2
41d5d66
 
40722f2
41d5d66
 
40722f2
41d5d66
 
 
40722f2
41d5d66
 
40722f2
41d5d66
 
40722f2
41d5d66
40722f2
41d5d66
 
40722f2
41d5d66
 
40722f2
41d5d66
 
 
40722f2
41d5d66
40722f2
 
41d5d66
40722f2
 
41d5d66
 
40722f2
 
 
 
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
59
60
61
62
import gradio as gr
import qrcode
from PIL import Image, ImageDraw, ImageFont
import time
import os

def generate_upi_qr_sticker(upi_code, amount, merchant_name=None):
    if not merchant_name:
        merchant_name = upi_code.split('@')[0]

    # Generate UPI QR code
    qr = qrcode.QRCode(version=1, box_size=10, border=5)
    qr_data = f"upi://pay?pa={upi_code}&pn={merchant_name}&am={amount}&cu=INR"

    qr.add_data(qr_data)
    qr.make(fit=True)
    qr_image = qr.make_image(fill="black", back_color="white").convert("RGB")

    # Open your template
    template = Image.open('temp.png').convert("RGB")

    # Resize the QR code if needed
    qr_image = qr_image.resize((700, 700))

    # Paste the QR code onto your template
    template.paste(qr_image, (225, 450))

    # Draw text for amount and merchant name
    draw = ImageDraw.Draw(template)
    font = ImageFont.truetype("arial.ttf", 50)  # Specify the font file and size

    text_amount = f"Amount: {amount} INR"
    text_merchant = f"Merchant: {merchant_name}"

    w_amount, h_amount = draw.textsize(text_amount, font=font)
    w_merchant, h_merchant = draw.textsize(text_merchant, font=font)

    width, height = template.size

    position_amount = ((width - w_amount) // 2, height - 1145)  # Adjust the height as needed
    position_merchant = ((width - w_merchant) // 2, height - 1205)  # Adjust the height as needed

    draw.text(position_amount, text_amount, (0, 0, 0), font=font)
    draw.text(position_merchant, text_merchant, (0, 0, 0), font=font)

    # Save the result
    final_image_path = os.path.join('static', 'qr_images', f'final_{upi_code}.png')
    template.save(final_image_path)

    return final_image_path

iface = gr.Interface(
    fn=generate_upi_qr_sticker,
    inputs=["text", "text", "text"],
    outputs="image",
    title="Generate UPI QR Code Sticker",
    description="Generate a UPI QR code sticker image."
)

if __name__ == "__main__":
    iface.launch()