Saditiya commited on
Commit
4a2b93f
·
verified ·
1 Parent(s): 3fd06a1

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -0
app.py ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import qrcode
3
+ from PIL import Image
4
+
5
+ def generate_qr(data, logo_file, bg_file):
6
+ # Buat QR dasar
7
+ qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_H)
8
+ qr.add_data(data)
9
+ qr.make(fit=True)
10
+
11
+ qr_img = qr.make_image(fill_color="black", back_color="white").convert("RGBA")
12
+
13
+ # Tambahkan background jika ada
14
+ if bg_file is not None:
15
+ bg = Image.open(bg_file).convert("RGBA")
16
+ bg = bg.resize(qr_img.size)
17
+ qr_img = Image.alpha_composite(bg, qr_img)
18
+
19
+ # Tambahkan logo jika ada
20
+ if logo_file is not None:
21
+ logo = Image.open(logo_file).convert("RGBA")
22
+ # Skala logo agar tidak terlalu besar (misalnya 20% dari lebar QR)
23
+ logo_size = int(qr_img.size[0] * 0.2)
24
+ logo = logo.resize((logo_size, logo_size))
25
+ pos = ((qr_img.size[0] - logo_size) // 2, (qr_img.size[1] - logo_size) // 2)
26
+ qr_img.paste(logo, pos, mask=logo)
27
+
28
+ return qr_img
29
+
30
+ with gr.Blocks() as demo:
31
+ gr.Markdown("## Custom QR Code Generator with Logo & Background")
32
+
33
+ with gr.Row():
34
+ data = gr.Textbox(label="Link / Text untuk QR", placeholder="https://contoh.com")
35
+
36
+ with gr.Row():
37
+ logo_file = gr.File(label="Upload Logo (PNG)" , type="filepath")
38
+ bg_file = gr.File(label="Upload Background (PNG/JPG)", type="filepath")
39
+
40
+ generate_btn = gr.Button("Generate QR")
41
+ output_img = gr.Image(label="Hasil QR Code")
42
+
43
+ generate_btn.click(fn=generate_qr, inputs=[data, logo_file, bg_file], outputs=output_img)
44
+
45
+ if __name__ == "__main__":
46
+ demo.launch()