import qrcode
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
import json

## Variablen
songs = json.load(open("songs.json"))
strFont = "Raleway-ExtraBold.ttf"
strBGcolor = "#ffffff"
strFGcolor = "#1a1a1a"

for song in songs:
    ## Noch mehr Variablen!
    strGuid = song["Guid"]
    strDay = song["Day"]
    strClaim = song["Claim"]

    ## QR-Code erstelen
    qr = qrcode.QRCode(
        version=4,
        error_correction=qrcode.constants.ERROR_CORRECT_Q,
        box_size=20,
        border=4,
    )

    qr.add_data('https://www.friedersdorf.de/adventskalender/index.php?tag='+strGuid)
    qr.make(fit=True)
    img = qr.make_image(fill_color = strFGcolor, back_color=strBGcolor).convert('RGB')
    
    imgW, imgH = img.size
    ## Nummer zeichnen
    font = ImageFont.truetype(strFont, 70, encoding="unic")
    W, H = (200,200)
    draw = ImageDraw.Draw(img)
    draw.ellipse((imgW/2-W/2, imgH/2-H/2, imgW/2+W/2, imgH/2+H/2), fill=strBGcolor, outline=strFGcolor, width=10)
    w, h = draw.textsize(strDay, font=font)
    draw.text(((imgW-w)/2,(imgH-h)/2), strDay, fill=strFGcolor, font=font)

    ## Neues Bild erstellen, aber groeßer
    imgNew = Image.new("RGBA", (imgW, imgH+150), strBGcolor)
    imgNew.paste(img, (0,0))

    ## Claim reinschreiben
    draw = ImageDraw.Draw(imgNew)
    font = ImageFont.truetype(strFont, 50, encoding="unic")
    w, h = draw.textsize(strClaim, font=font)
    draw.text(((imgW-w)/2, 1000), strClaim, fill=strFGcolor, font=font)

    imgNew.save("qrcodes/" + strGuid + ".png")
Code language: PHP (php)

So viel Gequatsche für so wenig Code. Falls ihr hier trotzdem auf Hindernisse stoßt, meldet euch einfach auf einem der bekannten Wege und ich versuche eure Fragen entweder direkt zu beantworten, oder den Text irgendwie anzupassen. Auf der folgenden Seite sprechen wir über das notwendige PHP-Skript.

2 Comments Add New Comment

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hallo! Mein Name ist Marco Friedersdorf und bin Freelancer im Bereich der Software-Entwicklung und IT-Beratung. Mit Artikeln wie diesem möchte ich einen kleinen Einblick in meine Arbeit geben und über die Dinge sprechen, die mich als Informatiker beschäftigen.
tripadvisor flickr americanexpress bandcamp basecamp behance bigcartel bitbucket blogger codepen compropago digg dribbble dropbox ello etsy eventbrite evernote facebook feedly github gitlab goodreads googleplus instagram kickstarter lastfm line linkedin mailchimp mastercard medium meetup messenger mixcloud paypal periscope pinterest quora reddit rss runkeeper shopify signal sinaweibo skype slack snapchat soundcloud sourceforge spotify stackoverflow stripe stumbleupon trello tumblr twitch twitter uber vimeo vine visa vsco wechat whatsapp wheniwork wordpress xero xing yelp youtube zerply zillow px aboutme airbnb amazon pencil envelope bubble magnifier cross menu arrow-up arrow-down arrow-left arrow-right envelope-o caret-down caret-up caret-left caret-right