Example #1
0
    def __init__(self,
                 resize=None,
                 convert_type=1,
                 dither=False,
                 palette=None,
                 levels=1,
                 level_scale=4,
                 scale=Image.BICUBIC,
                 traversal=None):
        """Image scanner constructor.

        Parameters
        ----------
        resize : (`int`, `int`) or `None`, optional
            If not `None`, resize images before scanning (default: `None`).
        convert_type : `int`, optional
            Image conversion type (default: 1).
        dither : `bool`
            If `True`, enable image dithering (default: `False`).
        palette : `list` of `int`, optional
            Image palette (default: `markovchain.image.util.palette(8, 4, 8)`).
        levels : `int`, optional
            Number of scanner levels (default: 1).
        level_scale : `int` or `list` of `int`
            Level scale factors.
        scale : `int`, optional
            Scale quality (default: `PIL.Image.BICUBIC`).
        traversal : `dict` or `markovchain.image.traversal.Traversal` or `list` of (`dict` or `markovchain.image.traversal.Traversal`), optional
            Level traversals (default: `markovchain.image.traversal.HLines()`).
        """
        super().__init__()
        self._levels = None
        self._level_scale = None
        self._level_scale_max = None
        self._palette = None
        self._traversal = None
        self._traversal_max = None
        self.min_size = None
        self.palette_image = None
        self.resize = tuple(resize) if resize is not None else None
        self.palette = palette
        self.convert = convert_type
        self.levels = levels
        self.level_scale = level_scale
        self.dither = dither
        if isinstance(scale, str):
            scale = Image.__getattribute__(scale)
        self.scale = scale
        self.traversal = traversal