File size: 2,262 Bytes
4d26b57
7d8f7f9
d3b0e0e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13bffbf
d3b0e0e
 
 
af2b467
d3b0e0e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
63
64
65
66
67
68
69
70
71
72
73
74
75
import qrcode
from PIL import Image
import gradio as gr
import io
import base64
import numpy as np
import cv2
import tempfile


# QR kod oluşturma işlevi
def generate_qr(data):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )
    qr.add_data(data)
    qr.make(fit=True)
    img = qr.make_image(fill="black", back_color="white")

    # Base64 kodlama
    buffered = io.BytesIO()
    img.save(buffered, format="PNG")
    img_base64 = base64.b64encode(buffered.getvalue()).decode("utf-8")

    # PNG olarak geçici kaydetme
    temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".png")
    img.save(temp_file.name, format="PNG")
    temp_file.close()

    return f"data:image/png;base64,{img_base64}", temp_file.name, img_base64




# Gradio arayüzü oluşturma
def create_gradio_interface():
    with gr.Blocks() as demo:
        gr.Markdown("## QR Code Generator ")

        # QR kod oluşturma sekmesi
        with gr.Tab("Generate QR Code"):
            data_input = gr.Textbox(placeholder="Linki girin", label="Link")
            generate_button = gr.Button("Generate QR Code")
            qr_code_html = gr.HTML(label="Generated QR Code (Base64 Embedded)")
            qr_png_file = gr.File(label="Download QR Code (PNG)")
            qr_base64_file = gr.File(label="Download Base64 (TXT)")

            def generate_qr_interface(data):
                if not data.strip():
                    raise ValueError("Input text cannot be empty!")
                img_base64, png_path, base64_str = generate_qr(data)

                base64_txt_path = tempfile.NamedTemporaryFile(delete=False, suffix=".txt")
                with open(base64_txt_path.name, "w") as f:
                    f.write(base64_str)

                html_content = f'<img src="{img_base64}" alt="QR Code" style="max-width:300px;">'
                return html_content, png_path, base64_txt_path.name

            generate_button.click(
                generate_qr_interface,
                inputs=data_input,
                outputs=[qr_code_html, qr_png_file, qr_base64_file],
            )


    demo.launch(share=True)


# Arayüzü çalıştırma
create_gradio_interface()