import os import uuid from amzqr import amzqr from PIL import Image import streamlit as st class GeneradorQR: # Constructor def __init__(self, fondo, hipervinculo, nombre_archivo): self.__fondo = fondo self.__hipervinculo = hipervinculo self.__nombre_archivo = nombre_archivo def generate_qrcode(self): _, _, self.__qr_name = amzqr.run( self.__hipervinculo, # Hipervínculo version=1, level='H', picture=self.__fondo, # Imagen de fondo colorized=True, contrast=1.0, brightness=0.8, save_name=self.__nombre_archivo, # Nombre del archivo con el código QR save_dir=os.getcwd() ) def get_qrcode(self): return self.__qr_name # Función para Streamlit def generar_qr(hipervinculo, fondo): print(type(fondo)) # # Guarda la imagen de fondo en un archivo temporal fondo_path = f"{uuid.uuid4()}_fondo.png" fondo.save(fondo_path) nombre_archivo = f"{uuid.uuid4()}.png" # Nombre aleatorio del archivo # Instanciar la clase GeneradorQR print(f'nombre_archivo:{nombre_archivo}') print(f'hipervinculo:{hipervinculo}') print(f'fondo:{fondo_path}') generador_qr = GeneradorQR(nombre_archivo=nombre_archivo, hipervinculo=hipervinculo, fondo=fondo_path) generador_qr.generate_qrcode() # Genera archivo imagen con el código QR qr_path = generador_qr.get_qrcode() # Obtiene ruta del archivo imagen con el código QR return qr_path # Interfaz de Streamlit st.title("Generador de código QR con fondo personalizado") # Input col1, col2 = st.columns(2) with col1: hipervinculo = st.text_input("Hipervínculo") fondo = st.file_uploader("Imagen de fondo", type=["png", "jpg", "jpeg"]) with col2: if hipervinculo and fondo: fondo_imagen = Image.open(fondo) qr_path = generar_qr(hipervinculo, fondo_imagen) st.image(qr_path, caption="Código QR generado", use_column_width=True) st.success(f"Código QR generado")