Exemple #1
0
def get_text_from_img(img: PIL.Image.Image):

    width, height = img.size
    text = []
    for y in range(height):
        for x in range(width):
            red, green, blue = img.getpixel((x, y))
            if red == 0:
                break
            index = (green << 8) + blue
            text.append(chr(index))
    return "".join(text)
Exemple #2
0
def strip_image(image: PIL.Image.Image) -> PIL.Image.Image:
    """Remove white and black edges"""
    for x in range(image.width):
        for y in range(image.height):

            r, g, b, _ = image.getpixel((x, y))

            if r > 247 and g > 247 and b > 247:
                image.putpixel((x, y), (0, 0, 0, 0))

    image = image.crop(image.getbbox())

    return image
Exemple #3
0
def _trim_image(
    img: PIL.Image.Image,
    border_color: typing.Tuple[int] = None,
) -> PIL.Image.Image:

    if border_color is None:
        trimmed = img
        for xy in itertools.product(range(2), range(2)):
            trimmed = _trim_image(
                img=trimmed,
                border_color=img.getpixel(xy),
            )
        return trimmed

    bg = PIL.Image.new(img.mode, img.size, border_color)
    diff = PIL.ImageChops.difference(img, bg)
    bbox = diff.getbbox()

    if bbox:
        return img.crop(bbox)
    else:
        # found no content
        raise ValueError("cannot trim; image was empty")