Spaces:
Running
Running
File size: 2,266 Bytes
af74360 bcb8d08 e1f3ebd af74360 3d156ef b8adac9 3d156ef af74360 9c6f546 af74360 b8adac9 af74360 9c6f546 3d156ef 9c6f546 bcb8d08 af74360 3d156ef 9c6f546 3d156ef 9c6f546 3d156ef 9c6f546 bcb8d08 af74360 9c6f546 3d156ef 9c6f546 e1f3ebd 3d156ef cac2d9a bcb8d08 3d156ef |
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 |
import qrcode
from PIL import Image
import base64
import gradio as gr
def encode_file_to_base64(file_path):
"""Reads any file and encodes it to base64."""
with open(file_path, "rb") as f:
encoded_data = base64.b64encode(f.read()).decode("utf-8")
return encoded_data
def generate_qr(data: str, error_correction: int = qrcode.constants.ERROR_CORRECT_L, box_size: int = 10, border: int = 4, fill_color: str = "black", back_color: str = "white"):
"""Generates a QR code from given data."""
final_url = f"https://flowly-ai.vercel.app/tools/qr/qr-code/read/{data}"
qr = qrcode.QRCode(
version=1,
error_correction=error_correction,
box_size=box_size,
border=border,
)
qr.add_data(final_url)
qr.make(fit=True)
img_qr = qr.make_image(fill_color=fill_color, back_color=back_color)
output_path = "qr_code.png"
img_qr.save(output_path)
return output_path
def qr_code_interface(input_type, text, file, error_correction, box_size, border, fill_color, back_color):
if input_type == "Text" and text:
encoded_text = base64.b64encode(text.encode('utf-8')).decode('utf-8')
return generate_qr(encoded_text, error_correction, box_size, border, fill_color, back_color)
elif input_type == "File" and file:
encoded_file = encode_file_to_base64(file.name)
return generate_qr(encoded_file, error_correction, box_size, border, fill_color, back_color)
else:
return None
interface = gr.Interface(
fn=qr_code_interface,
inputs=[
gr.Radio(["Text", "File"], label="Input Type", value="Text"),
gr.Textbox(label="Enter Text"),
gr.File(label="Upload File"),
gr.Slider(0, 3, 1, label="Error Correction", value=0),
gr.Slider(1, 20, 1, label="Box Size", value=10),
gr.Slider(1, 10, 1, label="Border Size", value=4),
gr.ColorPicker(label="QR Fill Color", value="#000000"),
gr.ColorPicker(label="QR Background Color", value="#FFFFFF"),
],
outputs=gr.Image(type="filepath", label="Generated QR Code"),
description="Generate a QR Code from either text or any file with custom styles and colors.",
css="footer {visibility: hidden}"
)
interface.launch(share=True) |