31 lines
1,013 B
Python
31 lines
1,013 B
Python
"""Atari conversion dispatch."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from ... import imageprep
|
|
from .. import palette as apal
|
|
from . import gr15
|
|
|
|
_MODULES = {"gr15": gr15}
|
|
for _name in ("gr9", "gr8", "gr15dli", "mono"):
|
|
try:
|
|
_mod = __import__(f"lenser.atari.convert.{_name}", fromlist=[_name])
|
|
_MODULES[_name] = _mod
|
|
except Exception:
|
|
pass
|
|
|
|
MODES = list(_MODULES.keys())
|
|
|
|
|
|
def convert_image(path_or_img, mode="gr15", palette_name="ntsc",
|
|
dither_mode="floyd", intensive=False,
|
|
prep_opt: imageprep.PrepOptions | None = None, base_color=None):
|
|
prep_opt = prep_opt or imageprep.PrepOptions()
|
|
module = _MODULES[mode]
|
|
border_rgb = apal.get_palette(palette_name)[0]
|
|
img_rgb = imageprep.prepare(
|
|
path_or_img, module.WIDTH, module.HEIGHT, module.PIXEL_ASPECT,
|
|
prep_opt, border_rgb=border_rgb,
|
|
)
|
|
return module.convert(img_rgb, palette_name, dither_mode, intensive,
|
|
base_color=base_color)
|