from term import Atom from pyrlang.gen.server import GenServer from pyrlang.gen.decorators import call, cast, info from PIL import Image import io import sys class Pil(GenServer): def __init__(self, node, logger) -> None: super().__init__() node.register_name(self, Atom('pil')) self.logger = logger print("clipask: starting") mypid = self.pid_ self.logger.info("initialized process: pil.") @call(1, lambda msg: type(msg) == tuple and msg[0] == Atom("run")) def run(self, msg): self.logger.info("clip_ask: inference") image = Image.open(io.BytesIO(msg[1])) return (Atom('ok'), {"width": image.width, "height": image.height, "animated": getattr(image, "is_animated", False)})