コード例 #1
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def confusedcat(request):
    base = Image.open("assets/confusedcat/confusedcat.bmp")
    font = ImageFont.truetype("assets/fonts/medium.woff", size=36)
    text = request.headers.get("text")
    canv = ImageDraw.Draw(base)
    try:
        ladies, cat = text.replace(" ,", ",", 1).split(",", 1)
    except ValueError:
        ladies = "Dank Memer"
        cat = "People who forget to split text with a comma"
    ladies = wrap(font, ladies, 510)
    cat = wrap(font, cat, 510)
    render_text_with_emoji(base,
                           canv, (5, 5),
                           ladies[:100],
                           font=font,
                           fill="Black")
    render_text_with_emoji(base,
                           canv, (516, 5),
                           cat[:100],
                           font=font,
                           fill="Black")

    base = base.convert("RGB")
    return gen_file_response(base, {"format": "png"})
コード例 #2
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def airpods(request):
    blank = Image.new("RGBA", (400, 128), (255, 255, 255, 0))
    args = await getarg(request)
    avatar = await getavatar(array=args[0])
    avatar = avatar[0]
    left = Image.open("assets/airpods/left.gif")
    right = Image.open("assets/airpods/right.gif")
    out = []
    for i in range(0, left.n_frames):
        left.seek(i)
        right.seek(i)
        f = blank.copy().convert("RGBA")
        l = left.copy().convert("RGBA")
        r = right.copy().convert("RGBA")
        f.paste(l, (0, 0), l)
        f.paste(avatar, (136, 0), avatar)
        f.paste(r, (272, 0), r)
        out.append(f.resize((400, 128), Image.LANCZOS).convert("RGBA"))
    return gen_file_response(
        out[0],
        {
            "format": "gif",
            "save_all": True,
            "append_images": out[1:],
            "loop": 0,
            "disposal": 2,
            "optimize": True,
            "duration": 30,
            "transparency": 0,
        },
    )
コード例 #3
0
ファイル: endpoint2.py プロジェクト: ssiyad/imgen
async def expanddong(request):
    text = request.headers.get("text")
    text = text[:500]
    lines = ceil((len(text) * 128) / 1920) + 1
    base = Image.new("RGBA", (1920, lines * 128), (255, 255, 255, 0))
    line = 0
    pos = 0
    chars = dict()
    for i in listdir("assets/expanddong"):
        if i.endswith(".bmp"):
            chars[i[0]] = Image.open(f"assets/expanddong/{i}")
    for word in text.split(" "):
        if 15 - pos <= len(word):
            pos = 0
            line += 1
        for char in word:
            char = char.lower()
            if chars.get(char):
                base.paste(chars[char], (pos * 128, line * 128))
            pos += 1
        pos += 1
        if pos >= 15:
            pos = 0
            line += 1

    base = base.convert("RGBA")
    return gen_file_response(base, {"format": "png"})
コード例 #4
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def boo(request):
    args = await getarg(request)
    base = Image.open("assets/boo/boo.bmp").convert("RGBA")
    canv = ImageDraw.Draw(base)

    text = args[2]

    if len(text) != 2:
        text = ["Separate the items with a", "comma followed by a space"]

    first, second = text

    first_font, first_text = auto_text_size(
        first,
        ImageFont.truetype("assets/fonts/sans.ttf"),
        144,
        font_scalar=0.7)
    second_font, second_text = auto_text_size(
        second,
        ImageFont.truetype("assets/fonts/sans.ttf"),
        144,
        font_scalar=0.7)

    canv.text((35, 54), first_text, font=first_font, fill="Black")
    canv.text((267, 57), second_text, font=second_font, fill="Black")
    base = base.convert("RGB")
    return gen_file_response(base, {"format": "png"})
コード例 #5
0
ファイル: endpoint2.py プロジェクト: ssiyad/imgen
async def expandingwwe(request):
    base = Image.open("assets/expandingwwe/expandingwwe.jpg")
    font = ImageFont.truetype("assets/fonts/verdana.ttf", size=30)

    text = request.headers.get("text")
    text = text.replace(", ", ",")

    if len(text.split(",")) < 5:
        (
            a,
            b,
            c,
            d,
            e,
        ) = "you need, five items, for this, command, (split by commas)".split(",")
    else:
        a, b, c, d, e = text.split(",", 4)

    a, b, c, d, e = [wrap(font, i, 225).strip() for i in [a, b, c, d, e]]

    canvas = ImageDraw.Draw(base)
    canvas.text((5, 5), a, font=font, fill="Black")
    canvas.text((5, 205), b, font=font, fill="Black")
    canvas.text((5, 410), c, font=font, fill="Black")
    canvas.text((5, 620), d, font=font, fill="Black")
    canvas.text((5, 825), e, font=font, fill="Black")
    return gen_file_response(base, {"format": "png"})
コード例 #6
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def america(request):
    args = await getarg(request)
    av = await getavatar(array=args[0])
    img1 = av[0].convert("RGBA").resize((480, 480))
    img2 = Image.open("assets/america/america.gif")
    img1.putalpha(128)
    out = []
    for i in range(0, img2.n_frames):
        img2.seek(i)
        f = img2.copy().convert("RGBA").resize((480, 480))
        f.paste(img1, (0, 0), img1)
        out.append(f.resize((256, 256)))

    return gen_file_response(
        out[0],
        {
            "format": "gif",
            "save_all": True,
            "append_images": out[1:],
            "loop": 0,
            "disposal": 2,
            "optimize": True,
            "duration": 30,
        },
    )
コード例 #7
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def cheating(request):
    base = Image.open("assets/cheating/cheating.bmp")
    font = ImageFont.truetype("assets/fonts/medium.woff", size=26)
    text = request.headers.get("text")
    canv = ImageDraw.Draw(base)
    try:
        me, classmate = text.replace(" ,", ",", 1).split(",", 1)
    except ValueError:
        me = "aight thx"
        classmate = "yo dude, you need to split the text with a comma"
    me = wrap(font, me, 150)
    classmate = wrap(font, classmate, 150)
    render_text_with_emoji(base,
                           canv, (15, 300),
                           me[:50],
                           font=font,
                           fill="White")
    render_text_with_emoji(base,
                           canv, (155, 200),
                           classmate[:50],
                           font=font,
                           fill="White")

    base = base.convert("RGB")
    return gen_file_response(base, {"format": "png"})
コード例 #8
0
ファイル: endpoint2.py プロジェクト: ssiyad/imgen
async def cry(request):
    base = Image.open("assets/cry/cry.bmp")
    font = ImageFont.truetype("assets/fonts/tahoma.ttf", size=20)
    canv = ImageDraw.Draw(base)
    text = request.headers.get("text")
    text = wrap(font, text, 180)
    render_text_with_emoji(base, canv, (382, 80), text, font=font, fill="Black")
    return gen_file_response(base, {"format": "png"})
コード例 #9
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def aborted(request):
    base = Image.open("assets/aborted/aborted.bmp")
    args = await getarg(request)
    av = await getavatar(array=args[0])
    img1 = av[0].convert("RGBA").resize((90, 90))
    base.paste(img1, (390, 130), img1)
    base = base.convert("RGB")
    return gen_file_response(base, {"format": "png"})
コード例 #10
0
ファイル: endpoint2.py プロジェクト: ssiyad/imgen
async def egg(request):
    base = Image.open("assets/egg/egg.bmp").resize((350, 350)).convert("RGBA")
    args = await getarg(request)
    avatar = await getavatar(array=args[0])
    avatar = avatar[0].resize((50, 50)).convert("RGBA")

    base.paste(avatar, (143, 188), avatar)
    base = base.convert("RGBA")
    return gen_file_response(base, {"format": "png"})
コード例 #11
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def bongocat(request):
    args = await getarg(request)
    avatar = await getavatar(array=args[0])
    base = Image.open("assets/bongocat/bongocat.bmp").convert("RGBA")
    avatar = avatar[0].resize((750, 750)).convert("RGBA")

    avatar.paste(base, (0, 0), base)
    avatar = avatar.convert("RGBA")
    return gen_file_response(base, {"format": "png"})
コード例 #12
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def cancer(request):
    args = await getarg(request)
    avatar = await getavatar(array=args[0])
    avatar = avatar[0].resize((100, 100)).convert("RGBA")
    base = Image.open("assets/cancer/cancer.bmp").convert("RGBA")

    base.paste(avatar, (351, 200), avatar)
    base = base.convert("RGBA")
    return gen_file_response(base, {"format": "png"})
コード例 #13
0
ファイル: endpoint2.py プロジェクト: ssiyad/imgen
async def disability(request):
    args = await getarg(request)
    avatar = await getavatar(array=args[0])
    avatar = avatar[0].resize((175, 175)).convert("RGBA")
    base = Image.open("assets/disability/disability.bmp").convert("RGBA")

    base.paste(avatar, (450, 325), avatar)
    base = base.convert("RGBA")
    return gen_file_response(base, {"format": "png"})
コード例 #14
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def affect(request):
    args = await getarg(request)
    av = await getavatar(array=args[0])
    avatar = av[0].resize((200, 157)).convert("RGBA")
    base = Image.open("assets/affect/affect.bmp").convert("RGBA")

    base.paste(avatar, (180, 383, 380, 540), avatar)
    base = base.convert("RGB")
    return gen_file_response(base, {"format": "png"})
コード例 #15
0
ファイル: endpoint2.py プロジェクト: ssiyad/imgen
async def delete(request):
    base = Image.open("assets/delete/delete.bmp").convert("RGBA")
    args = await getarg(request)
    avatar = await getavatar(array=args[0])
    avatar = avatar[0].resize((195, 195)).convert("RGBA")

    base.paste(avatar, (120, 135), avatar)
    base = base.convert("RGBA")
    return gen_file_response(base, {"format": "png"})
コード例 #16
0
ファイル: endpoint2.py プロジェクト: ssiyad/imgen
async def dab(request):
    base = Image.open("assets/dab/dab.bmp").convert("RGBA")
    args = await getarg(request)
    avatar = await getavatar(array=args[0])
    avatar = avatar[0].resize((500, 500)).convert("RGBA")
    final_image = Image.new("RGBA", base.size)

    final_image.paste(avatar, (300, 0), avatar)
    final_image.paste(base, (0, 0), base)
    return gen_file_response(base, {"format": "png"})
コード例 #17
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def abandon(request):
    args = await getarg(request)
    text = args[2][0]
    base = Image.open("assets/abandon/abandon.bmp")
    font = ImageFont.truetype("assets/fonts/verdana.ttf", 24)
    canv = ImageDraw.Draw(base)
    render_text_with_emoji(base, canv, (25, 413), wrap(font, text, 320), font,
                           "black")
    base = base.convert("RGB")
    return gen_file_response(base, {"format": "png"})
コード例 #18
0
ファイル: endpoint2.py プロジェクト: ssiyad/imgen
async def excuseme(request):
    base = Image.open("assets/excuseme/excuseme.bmp")

    font = ImageFont.truetype("assets/fonts/sans.ttf", size=40)
    canv = ImageDraw.Draw(base)
    text = request.headers.get("text")
    text = wrap(font, text, 787)
    render_text_with_emoji(base, canv, (20, 15), text, font=font, fill="Black")

    base = base.convert("RGB")
    return gen_file_response(base, {"format": "png"})
コード例 #19
0
ファイル: endpoint2.py プロジェクト: ssiyad/imgen
async def door(request):
    args = await getarg(request)
    avatar = await getavatar(array=args[0])
    avatar = avatar[0].resize((479, 479)).convert("RGBA")
    base = Image.open("assets/door/door.bmp").convert("RGBA")
    final_image = Image.new("RGBA", base.size)

    final_image.paste(avatar, (250, 0), avatar)
    final_image.paste(base, (0, 0), base)
    final_image = final_image.convert("RGBA")
    return gen_file_response(final_image, {"format": "png"})
コード例 #20
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def bed(request):
    args = await getarg(request)
    av = await getavatar(array=args[0])
    avatar = av[0].resize((100, 100)).convert("RGBA")
    avatar2 = av[1].resize((100, 100)).convert("RGBA")
    base = Image.open("assets/bed/bed.bmp").convert("RGBA")
    avatar_small = avatar.copy().resize((70, 70))
    base.paste(avatar, (25, 100), avatar)
    base.paste(avatar, (25, 300), avatar)
    base.paste(avatar_small, (53, 450), avatar_small)
    base.paste(avatar2, (53, 575), avatar2)
    base = base.convert("RGBA")
    return gen_file_response(base, {"format": "png"})
コード例 #21
0
ファイル: endpoint2.py プロジェクト: ssiyad/imgen
async def dank(request):
    args = await getarg(request)
    avatar = await getavatar(array=args[0])
    avatar = avatar[0].resize((320, 320)).convert("RGBA")

    horn = (
        Image.open("assets/dank/horn.bmp")
        .convert("RGBA")
        .resize((100, 100))
        .rotate(315, resample=Image.BICUBIC)
    )
    horn2 = ImageOps.mirror(
        horn.copy().resize((130, 130)).rotate(350, resample=Image.BICUBIC)
    )
    hit = Image.open("assets/dank/hit.bmp").convert("RGBA").resize((40, 40))
    gun = Image.open("assets/dank/gun.bmp").convert("RGBA").resize((250, 205))
    faze = Image.open("assets/dank/faze.bmp").convert("RGBA").resize((60, 40))

    blank = Image.new("RGBA", (256, 256), color=(254, 0, 0))
    blank.paste(avatar, (-20, -20), avatar)
    frames = []

    for i in range(8):
        base = blank.copy()
        if i == 0:
            base.paste(horn, (175, 0), horn)
            base.paste(horn2, (-60, 0), horn2)
            base.paste(hit, (90, 65), hit)
            base.paste(gun, (120, 130), gun)
            base.paste(faze, (5, 212), faze)
        else:
            base.paste(horn, (165 + randint(-8, 8), randint(0, 12)), horn)
            base.paste(horn2, (-50 + randint(-6, 6), randint(-2, 10)), horn2)
            base.paste(hit, (110 + randint(-30, 30), 55 + randint(-30, 30)), hit)
            base.paste(gun, (120, 130), gun)
            base.paste(faze, (12 + randint(-6, 6), 210 + randint(-2, 10)), faze)

        frames.append(base)

    return gen_file_response(
        frames[0],
        {
            "save_all": True,
            "append_images": frames[1:],
            "format": "gif",
            "loop": 0,
            "duration": 20,
            "optimize": True,
        },
    )
コード例 #22
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def armor(request):
    base = Image.open("assets/armor/armor.bmp").convert("RGBA")
    args = await getarg(request)
    text = args[2][0]
    font = ImageFont.truetype("assets/fonts/sans.ttf")
    font, text = auto_text_size(text, font, 207, font_scalar=0.8)
    canv = ImageDraw.Draw(base)

    render_text_with_emoji(base,
                           canv, (34, 371),
                           text,
                           font=font,
                           fill="Black")
    base = base.convert("RGB")
    return gen_file_response(base, {"format": "png"})
コード例 #23
0
ファイル: endpoint2.py プロジェクト: ssiyad/imgen
async def doglemon(request):
    base = Image.open("assets/doglemon/doglemon.bmp")
    font = ImageFont.truetype("assets/fonts/medium.woff", size=30)
    canv = ImageDraw.Draw(base)
    text = request.headers.get("text")
    try:
        lemon, dog = text.replace(" ,", ",", 1).split(",", 1)
    except ValueError:
        lemon = "Text that is not seperated by comma"
        dog = "Dank Memer"
    lemon = wrap(font, lemon, 450)
    dog = wrap(font, dog, 450)
    render_text_with_emoji(base, canv, (850, 100), lemon[:180], font=font, fill="Black")
    render_text_with_emoji(base, canv, (500, 100), dog[:200], font=font, fill="White")

    base = base.convert("RGB")
    return gen_file_response(base, {"format": "png"})
コード例 #24
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def brazzers(request):
    args = await getarg(request)
    avatar = await getavatar(array=args[0])
    avatar = avatar[0]
    base = Image.open("assets/brazzers/brazzers.bmp")
    aspect = avatar.width / avatar.height

    new_height = int(base.height * aspect)
    new_width = int(base.width * aspect)
    scale = new_width / avatar.width
    size = (int(new_width / scale / 2), int(new_height / scale / 2))

    base = base.resize(size).convert("RGBA")
    avatar.paste(base,
                 (avatar.width - base.width, avatar.height - base.height),
                 base)
    avatar = avatar.convert("RGBA")
    return gen_file_response(base, {"format": "png"})
コード例 #25
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def balloon(request):
    args = await getarg(request)
    text = args[2]
    base = Image.open("assets/balloon/balloon.bmp").convert("RGBA")
    font = ImageFont.truetype("assets/fonts/sans.ttf")
    canv = ImageDraw.Draw(base)
    if len(text) != 2:
        text = ["Separate the items with a", "comma followed by a space"]

    balloon, label = text

    balloon_text_1_font, balloon_text_1 = auto_text_size(balloon, font, 162)
    balloon_text_2_font, balloon_text_2 = auto_text_size(balloon,
                                                         font,
                                                         170,
                                                         font_scalar=0.95)
    balloon_text_3_font, balloon_text_3 = auto_text_size(balloon,
                                                         font,
                                                         110,
                                                         font_scalar=0.8)
    label_font, label_text = auto_text_size(label, font, 125)

    render_text_with_emoji(base,
                           canv, (80, 180),
                           balloon_text_1,
                           font=balloon_text_1_font,
                           fill="Black")
    render_text_with_emoji(base,
                           canv, (50, 530),
                           balloon_text_2,
                           font=balloon_text_2_font,
                           fill="Black")
    render_text_with_emoji(base,
                           canv, (500, 520),
                           balloon_text_3,
                           font=balloon_text_3_font,
                           fill="Black")
    render_text_with_emoji(base,
                           canv, (620, 155),
                           label_text,
                           font=label_font,
                           fill="Black")
    base = base.convert("RGB")
    return gen_file_response(base, {"format": "png"})
コード例 #26
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def brain(request):
    base = Image.open("assets/brain/brain.bmp")
    font = ImageFont.truetype("assets/fonts/verdana.ttf", size=30)
    args = await getarg(request)
    text = args[2]
    if len(text) < 4:
        a, b, c, d = "you need, four items, for this, command (split by commas)".split(
            ",")
    else:
        a, b, c, d = text[:4]

    a, b, c, d = [wrap(font, i, 225).strip() for i in [a, b, c, d]]

    canvas = ImageDraw.Draw(base)
    canvas.text((15, 40), a, font=font, fill="Black")
    canvas.text((15, 230), b, font=font, fill="Black")
    canvas.text((15, 420), c, font=font, fill="Black")
    canvas.text((15, 610), d, font=font, fill="Black")
    return gen_file_response(base, {"format": "png"})
コード例 #27
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def corporate(request):
    args = await getarg(request)
    avatar = await getavatar(array=args[0])
    base = Image.open("assets/corporate/corporate.jpg")
    img1 = avatar[0].convert("RGBA").resize((512, 512), Image.LANCZOS)
    try:
        img2 = avatar[1].convert("RGBA").resize((512, 512), Image.LANCZOS)
    except IndexError:
        img2 = img1

    img1 = skew(img1, [(208, 44), (718, 84), (548, 538), (20, 446)])

    img2 = skew(img2, [(858, 112), (1600, 206), (1312, 666), (634, 546)],
                resolution=1400)

    base.paste(img1, (0, 0), img1)
    base.paste(img2, (0, 0), img2)

    base = base.resize((base.width // 2, base.height // 2))
    return gen_file_response(base, {"format": "png"})
コード例 #28
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def changemymind(request):
    base = Image.open("assets/changemymind/changemymind.bmp").convert("RGBA")
    text_layer = Image.new("RGBA", base.size)
    args = await getarg(request)
    text = args[2][0]
    font, text = auto_text_size(text,
                                ImageFont.truetype("assets/fonts/sans.ttf"),
                                310)
    canv = ImageDraw.Draw(text_layer)

    render_text_with_emoji(text_layer,
                           canv, (290, 300),
                           text,
                           font=font,
                           fill="Black")

    text_layer = text_layer.rotate(23, resample=Image.BICUBIC)

    base.paste(text_layer, (0, 0), text_layer)
    base = base.convert("RGB")
    return gen_file_response(base, {"format": "png"})
コード例 #29
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def citation(request):
    text = request.headers.get("text")
    text = text.replace(", ", ",").split(",")
    if len(text) != 3:
        text = [
            "M.O.A. CITATION",
            "You must have 3 arguments split by comma",
            "PENALTY ASSESSED - WRONG IMAGE",
        ]
    base = Image.open("assets/citation/citation.bmp")
    font = ImageFont.truetype("assets/fonts/bmmini.ttf", size=16)
    canv = ImageDraw.Draw(base)
    text_0 = wrap(font, text[0], 320)
    text_1 = wrap(font, text[1], 320)
    canv.text((20, 10), text_0, font=font)
    canv.text((20, 45), text_1, font=font)
    size = canv.textsize(text[2], font=font)
    new_width = (base.width - size[0]) / 2
    canv.text((new_width, 130), text[2], font=font, align="center")
    base = base.convert("RGB")
    return gen_file_response(base, {"format": "png"})
コード例 #30
0
ファイル: endpoint.py プロジェクト: ssiyad/imgen
async def byemom(request):
    base = Image.open("assets/byemom/mom.bmp")
    args = await getarg(request)
    print(args)
    avatar = await getavatar(array=args[0])
    avatar = avatar[0].convert("RGBA").resize((70, 70), resample=Image.BICUBIC)
    avatar2 = avatar.copy().resize((125, 125), resample=Image.BICUBIC)
    text_layer = Image.new("RGBA", (350, 25))
    bye_layer = Image.new("RGBA", (180, 51), (255, 255, 255))
    font = ImageFont.truetype("assets/fonts/arial.ttf", size=20)
    bye_font = ImageFont.truetype("assets/fonts/arimobold.ttf", size=14)
    canv = ImageDraw.Draw(text_layer)
    bye = ImageDraw.Draw(bye_layer)
    username = args[1][0] or "Tommy"
    msg = "Alright {} im leaving the house to run some errands".format(
        username)
    text = args[2][0]
    text = wrap(font, text, 500)
    msg = wrap(font, msg, 200)

    render_text_with_emoji(text_layer,
                           canv, (0, 0),
                           text,
                           font=font,
                           fill="Black")
    render_text_with_emoji(bye_layer,
                           bye, (0, 0),
                           msg,
                           font=bye_font,
                           fill=(42, 40, 165))
    text_layer = text_layer.rotate(24.75, resample=Image.BICUBIC, expand=True)

    base.paste(text_layer, (350, 443), text_layer)
    base.paste(bye_layer, (150, 7))
    base.paste(avatar, (530, 15), avatar)
    base.paste(avatar2, (70, 340), avatar2)
    base = base.convert("RGBA")
    return gen_file_response(base, {"format": "png"})