File size: 1,745 Bytes
7324c34
cee8667
fb19d78
e992434
 
7324c34
 
e992434
7324c34
cee8667
7324c34
e992434
 
7324c34
 
 
e992434
 
 
 
 
cee8667
e992434
 
 
 
 
 
 
 
 
 
cee8667
e992434
 
 
 
cee8667
e992434
cee8667
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
import gradio as gr
import qrcode

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(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.ColorPicker(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()