QRCode / app.py
elfgk's picture
Update app.py
af2b467 verified
raw
history blame
2.26 kB
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()