Exemple #1
0
    def _image_to_list(self, image):
        if image.mode != 'RGB':
            image = image.convert(mode='RGB')

        image = crop(image, **self.get_dict(
          'top_offset', 'left_offset', 'bottom_offset', 'right_offset'))
        image = resize(
            image, **self.get_dict('x', 'y', 'stretch', 'top', 'left'))
        return cechomesh.ColorList(image, columns=image.size[0])
Exemple #2
0
    def _image_to_list(self, image):
        if image.mode != 'RGB':
            image = image.convert(mode='RGB')

        image = crop(
            image,
            **self.get_dict('top_offset', 'left_offset', 'bottom_offset',
                            'right_offset'))
        image = resize(image,
                       **self.get_dict('x', 'y', 'stretch', 'top', 'left'))
        return cechomesh.ColorList(image, columns=image.size[0])
Exemple #3
0
def resize(image,
           x,
           y,
           stretch=False,
           top=None,
           left=None,
           mode='RGB',
           top_offset=0,
           left_offset=0,
           bottom_offset=0,
           right_offset=0,
           resample=None):
    if x <= 0:
        raise ValueError('x must be greater than zero')
    if y <= 0:
        raise ValueError('y must be greater than zero')
    if resample:
        try:
            resample = getattr(Image, resample.upper())
        except:
            raise ValueError("Didn't understand resample=%s" % resample)
    else:
        resample = Image.ANTIALIAS
    image = crop(image, top_offset, left_offset, bottom_offset, right_offset)

    size = x, y
    if stretch:
        return image.resize(size, resample=resample)
    result = Image.new(mode, size)

    ratios = [d1 / d2 for d1, d2 in zip(size, image.size)]
    if ratios[0] < ratios[1]:
        new_size = (size[0], int(image.size[1] * ratios[0]))
    else:
        new_size = (int(image.size[0] * ratios[1]), size[1])

    image = image.resize(new_size, resample=resample)
    if left is None:
        box_x = int((x - new_size[0]) / 2)
    elif left:
        box_x = 0
    else:
        box_x = x - new_size[0]

    if top is None:
        box_y = int((y - new_size[1]) / 2)
    elif top:
        box_y = 0
    else:
        box_y = y - new_size[1]

    result.paste(image, box=(box_x, box_y))
    return result
Exemple #4
0
def resize(image, x, y, stretch=False, top=None, left=None, mode='RGB',
           top_offset=0, left_offset=0, bottom_offset=0, right_offset=0,
           resample=None):
    if x <= 0:
        raise ValueError('x must be greater than zero')
    if y <= 0:
        raise ValueError('y must be greater than zero')
    if resample:
        try:
            resample = getattr(Image, resample.upper())
        except:
            raise ValueError("Didn't understand resample=%s" % resample)
    else:
        resample = Image.ANTIALIAS
    image = crop(image, top_offset, left_offset, bottom_offset, right_offset)

    size = x, y
    if stretch:
        return image.resize(size, resample=resample)
    result = Image.new(mode, size)

    ratios = [d1 / d2 for d1, d2 in zip(size, image.size)]
    if ratios[0] < ratios[1]:
        new_size = (size[0], int(image.size[1] * ratios[0]))
    else:
        new_size = (int(image.size[0] * ratios[1]), size[1])

    image = image.resize(new_size, resample=resample)
    if left is None:
        box_x = int((x - new_size[0]) / 2)
    elif left:
        box_x = 0
    else:
        box_x = x - new_size[0]

    if top is None:
        box_y = int((y - new_size[1]) / 2)
    elif top:
        box_y = 0
    else:
        box_y = y - new_size[1]

    result.paste(image, box=(box_x, box_y))
    return result