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