21 lines
881 B
Python
21 lines
881 B
Python
"""Emit real Python-encoded packets for JavaScript interoperability tests."""
|
|
import base64
|
|
import json
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
import numpy as np
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
|
|
from preview_core import HEADER, encode_image
|
|
|
|
fixtures = []
|
|
for shape in [(9, 13, 3), (17, 11, 4), (7, 5)]:
|
|
pixels = np.random.default_rng(7).integers(0, 256, shape, dtype=np.uint8)
|
|
thumbnail, original, _ = encode_image(pixels)
|
|
for kind, packet in [("thumbnail", thumbnail), ("original", original)]:
|
|
fields = HEADER.unpack_from(packet)
|
|
plain = np.bitwise_xor(np.frombuffer(packet, np.uint8, offset=HEADER.size), fields[3]).tobytes()
|
|
fixtures.append({"kind": kind, "packet": base64.b64encode(packet).decode(), "plain": base64.b64encode(plain).decode(), "width": fields[5], "height": fields[6]})
|
|
print(json.dumps(fixtures))
|