Source code for pierogis.ingredients.mmpx
import numpy as np
from .ingredient import Ingredient
[docs]class MMPX(Ingredient):
"""
use the MMPX algorithm implemented in rust to scale 2x
produces interesting style preserving effects for "paletted" pierogis
"""
[docs] def cook(self, pixels: np.ndarray):
"""
use the binding to the rscolorq package in rust
to perform an optimization in quantizing and dithering
"""
from ..algorithms import mmpx
a = np.full((*pixels.shape[:2], 1), 255)
# rotating and unrotating because different orientation is expected
cooked_pixels = mmpx(
np.ascontiguousarray(np.append(pixels, a, 2), dtype=np.dtype('uint8')),
)[:, :, :3]
return cooked_pixels