Exemple #1
0
    async def generate(self, request, avatars, text, usernames):
        avatar = Image.open(await http.get_image(request, avatars[0])).resize(
            (150, 150))
        base = Image.new('RGBA', (1500, 300))
        font_med = ImageFont.truetype(font='assets/fonts/medium.woff', size=60)
        font_time = ImageFont.truetype(font='assets/fonts/medium.woff',
                                       size=40)
        font_sb = ImageFont.truetype(font='assets/fonts/semibold.woff',
                                     size=55)

        iv = await make_avatar_mask(avatar)

        base.paste(avatar, (15, 75), mask=iv)

        words = Image.new('RGBA', base.size)
        canvas = ImageDraw.Draw(words)

        canvas.text((230, 70), usernames[0], font=font_med, fill='White')
        canvas.text((230, 150), text, font=font_sb, fill=(160, 160, 160))

        timestamp_left = 230 + canvas.textsize(usernames[0],
                                               font=font_med)[0] + 20
        canvas.text((timestamp_left, 90),
                    'Today at {}'.format(datetime.utcnow().strftime("%H:%M")),
                    font=font_time,
                    fill=(125, 125, 125))

        final = Image.alpha_composite(base, words)
        downscaled = final.resize((500, 100), Image.ANTIALIAS)

        b = BytesIO()
        downscaled.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #2
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/plan/plan.png').convert('RGBA')
        font = ImageFont.truetype(font='assets/fonts/sans.ttf', size=16)
        canv = ImageDraw.Draw(base)

        words = text.split(', ')

        if len(words) != 3:
            words = [
                'you need three items for this command',
                'and each should be split by commas',
                'Example: pls plan 1, 2, 3'
            ]

        words = [wrap(font, w, 120) for w in words]

        a, b, c = words

        canv.text((190, 60), a, font=font, fill='Black')
        canv.text((510, 60), b, font=font, fill='Black')
        canv.text((190, 280), c, font=font, fill='Black')
        canv.text((510, 280), c, font=font, fill='Black')

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
    async def generate(self, request, avatars, text, usernames):
        base = Image.open(
            'assets/knowyourlocation/knowyourlocation.jpg').convert('RGBA')
        # We need a text layer here for the rotation
        canv = ImageDraw.Draw(base)

        text = text.split(', ')

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

        top, bottom = text

        top_font, top_text = await auto_text_size(
            top, ImageFont.truetype(font='assets/fonts/sans.ttf'), 630)
        bottom_font, bottom_text = await auto_text_size(
            bottom, ImageFont.truetype(font='assets/fonts/sans.ttf'), 539)

        canv.text((64, 131), top_text, font=top_font, fill='Black')
        canv.text((120, 450), bottom_text, font=bottom_font, fill='Black')

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #4
0
    async def generate(self, request, avatars, text, usernames):
        avatar = Image.open(await
                            http.get_image(request,
                                           avatars[0])).convert('RGBA').resize(
                                               (256, 256))

        salt = (Image.open('assets/salty/salt.png').convert('RGBA').resize(
            (256, 256)).rotate(-130, resample=Image.BICUBIC))

        blank = Image.new('RGBA', (256, 256))
        blank.paste(avatar, (0, 0), avatar)
        frames = []

        for i in range(8):
            base = blank.copy()
            if i == 0:
                base.paste(salt, (-125, -125), salt)
            else:
                base.paste(salt,
                           (-135 + randint(-5, 5), -135 + randint(-5, 5)),
                           salt)

            frames.append(base)

        b = BytesIO()
        frames[0].save(b,
                       save_all=True,
                       append_images=frames[1:],
                       format='gif',
                       loop=0,
                       duration=20,
                       optimize=True)
        b.seek(0)
        return send_file(body=b, content_type='image/gif')
Exemple #5
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/byemom/mom.png')
        avatar = await make_avatar(
            Image.open(await http.get_image(request, avatars[0])).convert('RGBA').resize((250, 250), resample=Image.BICUBIC))
        avatar2 = avatar.copy().resize((125, 125), resample=Image.ANTIALIAS)
        avatar = avatar.resize((70, 70), Image.ANTIALIAS).rotate(-27, resample=Image.BICUBIC, expand=True)
        text_layer = Image.new('RGBA', (350, 25))
        bye_layer = Image.new('RGBA', (180, 51), (255, 255, 255))
        font = ImageFont.truetype(font='assets/fonts/arial.ttf', size=20)
        bye_font = ImageFont.truetype(font='assets/fonts/arimobold.ttf', size=14)
        canv = ImageDraw.Draw(text_layer)
        bye = ImageDraw.Draw(bye_layer)
        username = usernames[0] or 'tommy'
        msg = 'Alright {} I\'m leaving the house to run some errands'.format(username)

        text = wrap(font, text, 500)
        msg = wrap(font, msg, 200)

        canv.text((0, 0), text, font=font, fill='Black')
        bye.text((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, (513, 2), avatar)
        base.paste(avatar2, (70, 340), avatar2)

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #6
0
    async def generate(self, request, avatars, text, usernames):
        avatar = Image.open(await http.get_image(request, avatars[0])).resize(
            (400, 400)).convert('RGBA')

        joy, hand, hundred, fire = [
            Image.open(f'assets/deepfry/{asset}.png').resize(
                (100, 100)).rotate(randint(-30, 30)).convert('RGBA')
            for asset in ['joy', 'ok-hand', '100', 'fire']
        ]

        avatar.paste(joy, (randint(20, 75), randint(20, 45)), joy)
        avatar.paste(hand, (randint(20, 75), randint(150, 300)), hand)
        avatar.paste(hundred, (randint(150, 300), randint(20, 45)), hundred)
        avatar.paste(fire, (randint(150, 300), randint(150, 300)), fire)

        noise = avatar.convert('RGB')
        noise = noisegen.add_noise(noise, 25)
        noise = ImageEnhance.Contrast(noise).enhance(randint(5, 20))
        noise = ImageEnhance.Sharpness(noise).enhance(17.5)
        noise = ImageEnhance.Color(noise).enhance(randint(-15, 15))

        b = BytesIO()
        noise.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #7
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/roblox/roblox.png').convert('RGBA')
        avatar = Image.open(await http.get_image(request, avatars[0])).resize((56, 74)).convert('RGBA')
        base.paste(avatar, (168, 41), avatar)

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #8
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/batslap/batslap.jpg').resize((1000, 500)).convert('RGBA')
        avatar = Image.open(await http.get_image(request, avatars[1])).resize((220, 220)).convert('RGBA')
        avatar2 = Image.open(await http.get_image(request, avatars[0])).resize((200, 200)).convert('RGBA')
        base.paste(avatar, (580, 260), avatar)
        base.paste(avatar2, (350, 70), avatar2)

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #9
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/tweet/trump.jpg')
        font = ImageFont.truetype(font='assets/fonts/segoeuireg.ttf', size=50)
        canv = ImageDraw.Draw(base)
        text = wrap(font, text, 1150)
        canv.text((45, 160), text, font=font, fill='Black')

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #10
0
    async def generate(self, request, avatars, text, usernames):
        implode = '-{}'.format(str(randint(3, 15)))
        roll = '+{}+{}'.format(randint(0, 256), randint(0, 256))
        swirl = '{}{}'.format(choice(["+", "-"]), randint(120, 180))
        concat = ['-implode', implode, '-roll', roll, '-swirl', swirl]

        output = await gm.convert(request, avatars[0], concat, 'png')

        b = BytesIO(output)
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #11
0
    async def generate(self, request, avatars, text, usernames):
        img1 = Image.open(await http.get_image(request, avatars[0]))
        img2 = Image.open('assets/gay/gay.png').convert('RGBA').resize(
            img1.size)
        img2.putalpha(128)
        img1.paste(img2, (0, 0), img2)

        b = BytesIO()
        img1.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #12
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/abandon/abandon.png')
        font = ImageFont.truetype(font='assets/fonts/verdana.ttf', size=24)
        canv = ImageDraw.Draw(base)
        text = wrap(font, text, 320)
        canv.text((25, 413), text, font=font, fill='Black')

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #13
0
    async def generate(self, request, avatars, text, usernames):
        avatar = Image.open(await http.get_image(request, avatars[0])).resize(
            (175, 175)).convert('RGBA')
        base = Image.open('assets/disability/disability.jpg').convert('RGBA')

        base.paste(avatar, (450, 325), avatar)

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #14
0
    async def generate(self, request, avatars, text, usernames):
        avatar = Image.open(await http.get_image(request, avatars[0])).resize(
            (483, 483)).convert('RGBA')
        base = Image.open('assets/trash/trash.png').convert('RGBA')

        avatar = avatar.filter(ImageFilter.GaussianBlur(radius=6))
        base.paste(avatar, (480, 0), avatar)

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #15
0
    async def generate(self, request, avatars, text, usernames):
        overlay = Image.open('assets/jail/jail.png').resize((350, 350))
        base = Image.open(await
                          http.get_image(request,
                                         avatars[0])).convert('LA').resize(
                                             (350, 350))
        base.paste(overlay, (0, 0), overlay)

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #16
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/hitler/hitler.jpeg')
        img1 = Image.open(await
                          http.get_image(request,
                                         avatars[0])).convert('RGBA').resize(
                                             (140, 140))
        base.paste(img1, (46, 43), img1)

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #17
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/armor/armor.png').convert('RGBA')
        # We need a text layer here for the rotation
        font, text = await auto_text_size(text, ImageFont.truetype(font='assets/fonts/comic.ttf'), 207, font_scalar=1.5)
        canv = ImageDraw.Draw(base)

        canv.text((34, 355), text, font=font, fill='Black')

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #18
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/cry/cry.jpg')
        font = ImageFont.truetype(font='assets/fonts/tahoma.ttf', size=20)
        canv = ImageDraw.Draw(base)

        text = wrap(font, text, 180)
        canv.text((382, 80), text, font=font, fill='Black')

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #19
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/search/thesearch.png').convert('RGBA')
        font = ImageFont.truetype(font='assets/fonts/sans.ttf', size=16)
        canv = ImageDraw.Draw(base)

        text = wrap(font, text, 178)
        canv.text((65, 335), text, font=font, fill='Black')

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #20
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/spank/spank.jpg').resize((500, 500))
        img1 = Image.open(await http.get_image(request, avatars[0])).resize(
            (140, 140)).convert('RGBA')
        img2 = Image.open(await http.get_image(request, avatars[1])).resize(
            (120, 120)).convert('RGBA')
        base.paste(img1, (225, 5), img1)
        base.paste(img2, (350, 220), img2)

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #21
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/screams/screams.jpg').convert('RGBA')
        avatar = Image.open(await http.get_image(request, avatars[0])).resize(
            (175, 175)).convert('RGBA')
        avatar2 = Image.open(await http.get_image(request, avatars[1])).resize(
            (156, 156)).convert('RGBA')
        base.paste(avatar, (200, 1), avatar)
        base.paste(avatar2, (136, 231), avatar2)

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #22
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/brazzers/brazzers.png').resize(
            (300, 150)).convert('RGBA')
        avatar = Image.open(await http.get_image(request, avatars[0])).resize(
            (500, 500)).convert('RGBA')

        # avatar is technically the base
        avatar.paste(base, (200, 390), base)

        b = BytesIO()
        avatar.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #23
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/ohno/ohno.png').convert('RGBA')
        font = ImageFont.truetype(font='assets/fonts/sans.ttf',
                                  size=16 if len(text) > 38 else 32)
        canv = ImageDraw.Draw(base)

        text = wrap(font, text, 260)
        canv.text((340, 30), text, font=font, fill='Black')

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #24
0
    async def generate(self, request, avatars, text, usernames):
        avatar = Image.open(await http.get_image(request, avatars[0])).resize(
            (320, 320)).convert('RGBA')

        horn = Image.open('assets/dank/horn.png').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.png').convert('RGBA').resize(
            (40, 40))
        gun = Image.open('assets/dank/gun.png').convert('RGBA').resize(
            (250, 205))
        faze = Image.open('assets/dank/faze.png').convert('RGBA').resize(
            (60, 40))

        blank = Image.new('RGBA', (256, 256), color=(254, 0, 0))
        blank.paste(avatar, (-20, -20), avatar)
        # blank.paste(overlay, None, overlay)
        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)

        b = BytesIO()
        frames[0].save(b,
                       save_all=True,
                       append_images=frames[1:],
                       format='gif',
                       loop=0,
                       duration=20,
                       optimize=True)
        b.seek(0)
        return send_file(body=b, content_type='image/gif')
Exemple #25
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/satan/satan.png').convert('RGBA')
        avatar = Image.open(await http.get_image(request, avatars[0])).resize(
            (195, 195)).convert('RGBA')
        final_image = Image.new('RGBA', base.size)

        # Put the base over the avatar
        final_image.paste(avatar, (200, 90), avatar)
        final_image.paste(base, (0, 0), base)

        b = BytesIO()
        final_image.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #26
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/madethis/madethis.png').convert('RGBA')
        avatar = Image.open(await http.get_image(request, avatars[0])).resize(
            (130, 130)).convert('RGBA')
        avatar2 = Image.open(await http.get_image(request, avatars[1])).resize(
            (111, 111)).convert('RGBA')
        base.paste(avatar, (92, 271), avatar)
        base.paste(avatar2, (422, 267), avatar2)
        base.paste(avatar2, (406, 678), avatar2)
        base.paste(avatar2, (412, 1121), avatar2)

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #27
0
    async def generate(self, request, avatars, text, usernames):
        img = Image.open(await http.get_image(request, avatars[0]))
        if img.mode == 'RGBA':
            r, g, b, a = img.split()
            rgb_image = Image.merge('RGB', (r, g, b))
            inverted = ImageOps.invert(rgb_image)
            r, g, b = inverted.split()
            img = Image.merge('RGBA', (r, g, b, a))
        else:
            img = ImageOps.invert(img)

        b = BytesIO()
        img.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #28
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/facts/facts.jpg')
        # We need to create an image layer here for the rotation
        text_layer = Image.new('RGBA', base.size)
        font = ImageFont.truetype(font='assets/fonts/verdana.ttf', size=25)
        canv = ImageDraw.Draw(text_layer)

        text = wrap(font, text, 400)
        canv.text((90, 600), text, font=font, fill='Black')
        text_layer = text_layer.rotate(-13, resample=Image.BICUBIC)
        base.paste(text_layer, (0, 0), text_layer)

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #29
0
    async def generate(self, request, avatars, text, usernames):
        base = Image.open('assets/humansgood/humansgood.jpg').convert('RGBA')
        # We need a text layer here for the rotation
        font, text = await auto_text_size(
            text,
            ImageFont.truetype(font='assets/fonts/sans.ttf'),
            125,
            font_scalar=0.7)
        canv = ImageDraw.Draw(base)

        canv.text((525, 762), text, font=font, fill='Black')

        b = BytesIO()
        base.save(b, format='png')
        b.seek(0)
        return send_file(body=b, content_type='image/png')
Exemple #30
0
    async def generate(self, request, avatars, text, usernames):
        avatar = await http.get_image(request, avatars[0])
        with image.Image(file=avatar) as img:
            img.transform(resize='400x400')
            img.liquid_rescale(width=int(img.width * 0.5),
                               height=int(img.height * 0.5),
                               delta_x=0.5,
                               rigidity=0)
            img.liquid_rescale(width=int(img.width * 1.5),
                               height=int(img.height * 1.5),
                               delta_x=2,
                               rigidity=0)

            b = BytesIO()
            img.save(file=b)
            b.seek(0)
            return send_file(body=b, content_type='image/png')