summaryrefslogtreecommitdiff
path: root/priv/python/pyerlai/genservers/pil.py
blob: 13db32f3beb0dd3ec278c291b9783e8089122eeb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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)})