예제 #1
0
def gen_ex_die(exercise_list):
    global folder
    W, H = (190,190)
    regex = (r'[^a-zA-Z0-9]+')
    for message in exercise_list:

        message = str(message)
        message = message.strip()[2:-3]
        message = textwrap.wrap(message, width = 10)

        image = Image.new('RGB', (W, H), color = (255, 255, 255))
        draw = ImageDraw.Draw(image)
        fontsz = 30
        fnt = ImageFont.truetype('/fonts/calibri.ttf', fontsz)
        padding = 5
        if len(message) == 1:
            current_height = H/2 - fontsz / 2
        elif len(message) == 2:
            current_height = H/2 - fontsz
        elif len(message) >= 3:
            current_height = H/2 - fontsz * 2
        #TODO Need to deal with exactly three

        for line in message:
            w, h = draw.textsize(line, font = fnt)
            draw.text(((W - w) / 2, current_height), line, font = fnt, fill = (0, 0, 0, 1))
            current_height += h + padding

        filename = re.sub(regex, ' ', str(message))
        filename = filename.strip()
        image.save(f'images/{folder}/{filename}.png')
        ex_die_sides.append(f'images/{folder}/{filename}.png')
예제 #2
0
def gen_time_die(time_list):
    W, H = (190,190)
    regex = (r'[^a-zA-Z0-9]+')

    for message in time_list:

        message = str(message)
        message = message.strip()[2:-3]
        message = textwrap.wrap(message, width = 10)

        image = Image.new('RGB', (W, H), color = (255, 255, 255))
        draw = ImageDraw.Draw(image)
        fontsz = 30
        fnt = ImageFont.truetype('/fonts/calibri.ttf', fontsz)
        padding = 5
        if len(message) == 1:
            current_height = H/2 - fontsz / 2
        elif len(message) == 2:
            current_height = H/2 - fontsz
        #TODO This should throw an error when I have one with three

        for line in message:
            w, h = draw.textsize(line, font = fnt)
            draw.text(((W - w - len(message)) / 2, current_height), line, font=fnt, fill = (0, 0, 0, 1))
            current_height += h + padding

        filename = re.sub(regex, ' ', str(message))
        filename = filename.strip()
        image.save(f'images/timedie/{filename}.png')
        time_die_sides.append(f'images/timedie/{filename}.png')
예제 #3
0
파일: main.py 프로젝트: aahmad4/Dermatol
 def trim(im):
     bg = Image.new(im.mode, im.size, im.getpixel((0, 0)))
     diff = ImageChops.difference(im, bg)
     diff = ImageChops.add(diff, diff, 2.0, -100)
     bbox = diff.getbbox()
     if bbox:
         return im.crop(bbox)
예제 #4
0
def circularize_img(img_fn,
                    width,
                    im=None,
                    do_crop=True,
                    bw=False,
                    resize=True,
                    circularize=True):
    from PIL import Image, ImageOps, ImageDraw
    from kivy.app import App
    import numpy as np
    log = App.get_running_app().log

    #if not im:
    im = Image.open(img_fn).convert('RGB')
    log('??', im)

    # get center
    if do_crop: im = crop_square(im, width, width)
    if resize: im = im.resize((width, width))

    if bw:
        thresh = 175
        fn = lambda x: 255 if x > thresh else 0
        im = im.convert('L').point(fn, mode='1').convert('RGB')
        orig_color = (255, 255, 255)
        replacement_color = COLOR_ICON  #(255,0,0)
        # img = im.convert('RGB')
        data = np.array(im)
        data[(data == orig_color).all(axis=-1)] = replacement_color
        im = Image.fromarray(data, mode='RGB').convert('RGBA')

    if circularize_img:
        bigsize = (im.size[0] * 3, im.size[1] * 3)
        mask = Image.new('L', bigsize, 0)
        draw = ImageDraw.Draw(mask)
        draw.ellipse((0, 0) + bigsize, fill=255)
        mask = mask.resize(im.size, Image.ANTIALIAS)
        im.putalpha(mask)

    # give back bytes

    log('!!', im)

    output = ImageOps.fit(im, mask.size, centering=(0.5, 0.5))
    imgByteArr = io.BytesIO()
    output.save(imgByteArr, format='PNG')
    # imgByteArr = imgByteArr.getvalue()
    imgByteArr.seek(0)
    return imgByteArr
예제 #5
0
파일: main.py 프로젝트: brousch/playground
'''
Builder.load_string(kv)


class FullImage(Image):
    def __init__(self, **kwargs):
        super(FullImage, self).__init__(**kwargs)
        self.source = "test.png"


class Test(BoxLayout):
    def __init__(self, **kwargs):
        super(Test, self).__init__(**kwargs)
        self.add_widget(FullImage())


class TestApp(App):
    def build(self):
        return Test()


if __name__ == '__main__':
    #Create the background image
    from PIL import Image, ImageDraw
    img = Image.new('RGBA', (100, 100))
    draw = ImageDraw.Draw(img)
    draw.ellipse((25, 25, 75, 75), outline=(255, 0, 0))
    img.save('test.png', 'PNG', transparency=0)

    TestApp().run()
예제 #6
0
 def create_mask(self):
     self.mask = Image.new('L', (200,200), 0)
     draw = ImageDraw.Draw(self.mask) 
     draw.ellipse((0, 0) + self.mask.size, fill=255)