es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo crear un código QR en Python sin guardarlo como una imagen?

Estoy intentando hacer códigos QR usando Python en una aplicación Django utilizando este código:

def generate_qr_code (reference):
    qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4,
    )
    qr.add_data(reference)
    qr.make(fit=True)
    img = qr.make_image(fill_color="black", back_color="white").convert('RGB')
    filename = reference+".jpeg"
    img.save("C:\\qrs\\"+filename)

Ahora bien, esta función se llama cuando hago clic en un botón “Generar código QR”. Mi problema es que me gustaría que el código QR se muestre en una nueva pestaña de mi navegador en lugar de guardarse como una imagen, ya que solo necesito imprimirlos en papel en ese momento y no tengo necesidad de mantener las imágenes.

Gracias por tu ayuda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar el código QR en una nueva pestaña del navegador en lugar de guardarlo como una imagen, puedes utilizar el objeto HttpResponse de Django para devolver los datos de la imagen como una respuesta. Así es cómo puedes modificar la función generate_qr_code para lograr esto:

    from django.http import HttpResponse
    
    def generate_qr_code(request, reference):
        qr = qrcode.QRCode(
            version=1,
            error_correction=qrcode.constants.ERROR_CORRECT_H,
            box_size=10,
            border=4,
        )
        qr.add_data(reference)
        qr.make(fit=True)
        img = qr.make_image(fill_color="black", back_color="white").convert('RGB')
        response = HttpResponse(content_type='image/jpeg')
        img.save(response, 'JPEG')
        return response
    

    En esta función modificada, primero importamos el objeto HttpResponse de Django. Luego generamos la imagen del código QR como antes. En lugar de guardarla en un archivo, creamos un nuevo objeto HttpResponse con content_type establecido en ‘image/jpeg’. Luego guardamos la imagen en este objeto de respuesta utilizando el método img.save() con el formato ‘JPEG’. Finalmente, devolvemos este objeto desde la función.

    Ahora, cuando hagas clic en el botón “Generar código QR”, los datos de la imagen se devolverán como respuesta y el navegador debería mostrarlos en una nueva pestaña.

Comments are closed.