File size: 1,781 Bytes
7324c34
cee8667
1d0a868
 
 
fb19d78
e992434
 
7324c34
 
e992434
7324c34
cee8667
7324c34
1d0a868
e992434
7324c34
 
 
e992434
 
1d0a868
e992434
 
cee8667
e992434
 
 
 
 
1d0a868
e992434
 
 
 
cee8667
e992434
 
 
 
cee8667
e992434
cee8667
1d0a868
e992434
1d0a868
 
 
e992434
1d0a868
e992434
cee8667
e992434
cee8667
e992434
 
 
 
cee8667
e992434
 
 
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
import gradio as gr
import qrcode
from PIL import Image, ImageDraw
import io


def generate_qr_code(url, gradient_color1, gradient_color2, logo, qr_color):
    # Create QR code instance
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )

    # Add URL to the QR code
    qr.add_data(url)
    qr.make(fit=True)

    # Create the QR code image
    qr_image = qr.make_image(fill_color=qr_color, back_color="#ffffff")  # Set QR code color here

    # Add gradient if colors are provided
    if gradient_color1 and gradient_color2:
        qr_image = qr_image.convert("RGB")
        qr_image = qr_image.resize((500, 500))

        gradient = Image.new("RGB", qr_image.size)
        grad = ImageDraw.Gradient(grad.size, "LR", gradient_color1, gradient_color2)
        qr_image = Image.blend(qr_image, gradient, 0.5)

    # Add logo if provided
    if logo:
        logo_image = Image.open(logo).convert("RGBA")
        qr_image.paste(logo_image, (125, 125), logo_image)

    # Save the QR code to a byte stream
    qr_byte_stream = io.BytesIO()
    qr_image.save(qr_byte_stream, format="PNG")
    qr_byte_stream.seek(0)

    return qr_byte_stream.read()


inputs = [
    gr.inputs.Textbox(lines=1, label="URL to Site"),
    gr.inputs.Colorpicker(label="Gradient Color 1 (Optional)"),
    gr.inputs.Colorpicker(label="Gradient Color 2 (Optional)"),
    gr.inputs.Image(label="Logo (Optional)"),
    gr.inputs.Color(label="QR Code Color"),
]

outputs = gr.outputs.Image(type="bytes")

gr.Interface(
    fn=generate_qr_code,
    inputs=inputs,
    outputs=outputs,
    title="QR Code Generator",
    description="Generate QR codes with customizable options",
    theme="huggingface",
).launch()